gpt4 book ai didi

java - 比较器内部如何工作?

转载 作者:行者123 更新时间:2023-12-04 02:34:27 25 4
gpt4 key购买 nike

这对您来说可能听起来微不足道,但我很难将比较器/array.sort 可视化。我们如何仅使用 2 个参数对完整数组进行排序?它在内部如何运作?
例如-输入-[5,3,2,6,8,10,1],输出-[1,2,3,5,6,8,10]
它在内部使用哪种算法?它首先比较哪两个对象? (5 与 3 相比?)那么接下来的两个对象是什么? (5比2?)还是(3比2)?

public static void main(String[] args) {
Integer[] tring = new Integer[]{5,3,2,6,8,10,1};
lol(tring);
for(int i=0;i<tring.length;i++){
System.out.println(tring[i]);
}
}

public static void lol(Integer[] args) {
Arrays.sort(args,(h1,h2)->h1-h2);
}

最佳答案

你可以像这样想象这个过程。

Integer[] tring = new Integer[]  {5, 3, 2, 6, 8, 10, 1};
Comparator<Integer> comparator = (a, b) -> {
System.out.println(Arrays.toString(tring) + " comparing " + a + " and " + b);
return a.compareTo(b);
};
Arrays.sort(tring, comparator);
System.out.println(Arrays.toString(tring));
结果:
[5, 3, 2, 6, 8, 10, 1] comparing 3 and 5
[5, 3, 2, 6, 8, 10, 1] comparing 2 and 3
[5, 3, 2, 6, 8, 10, 1] comparing 6 and 2
[2, 3, 5, 6, 8, 10, 1] comparing 6 and 3
[2, 3, 5, 6, 8, 10, 1] comparing 6 and 5
[2, 3, 5, 6, 8, 10, 1] comparing 8 and 5
[2, 3, 5, 6, 8, 10, 1] comparing 8 and 6
[2, 3, 5, 6, 8, 10, 1] comparing 10 and 5
[2, 3, 5, 6, 8, 10, 1] comparing 10 and 8
[2, 3, 5, 6, 8, 10, 1] comparing 1 and 6
[2, 3, 5, 6, 8, 10, 1] comparing 1 and 3
[2, 3, 5, 6, 8, 10, 1] comparing 1 and 2
[1, 2, 3, 5, 6, 8, 10]

关于java - 比较器内部如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62492114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com