当前位置: 代码迷 >> 综合 >> java comparator
  详细解决方案

java comparator

热度:66   发布时间:2023-10-11 11:17:53.0

本质是在TimSort类中用了折半插入法实现

TimSort类while (left < right) {
    int mid = (left + right) >>> 1;if (c.compare(pivot, a[mid]) < 0)right = mid;elseleft = mid + 1;}

比较器的一点思考

class MyComparator implements Comparator<Integer> {
    @Overridepublic int compare(Integer o1, Integer o2) {
    //return o1 - o2; //语句一return o2 - o1; //语句二}
}

首先要知道,o1 是需要比较的数,o2 是一个标准,比较过程是

o1 - o2 结果为负,则 o1 排到 o2 的前面,此时说明 o1 的数值小于 o2结果为正,则 o1 排到 o2 的后面,此时说明 o1 的数值大于 o2结果为0,则 o1 和 o2 并排,此时说明 o1 的数值等于 o2
这种排序方式是从小到大升序排列o2 - o1 结果为负,则 o1 排到 o2 的前面,此时说明 o1 的数值大于 o2 (此处需要停顿思考一下)···

这种排序方式是从大到小降序排列

  相关解决方案