比较器接口的覆盖比较方法使用什么排序算法?

Collections.sort(ar, new Comparator() { @Override public int compare(Intervals o1, Intervals o2) { return (Integer.valueOf(o1.getEnd())) .compareTo(Integer.valueOf(o2.getEnd())); } }); 

大家好,我在java中有上面的代码。 这里,ar是一个列表,Intervals是一个包含2个整数变量的类:Start和End。 我想知道当我们覆盖Comparator接口的compare方法时,遵循什么排序算法。 我知道,默认情况下Collections.sort()和Arrays.sort()使用Timsort算法。 任何帮助将不胜感激。 非常感谢提前。

Collections.sort()使用Timsort的变体。

来自javadocs :

该实现改编自Tim Peters的Python排序(TimSort)。 它使用了Peter McIlroy的“乐观排序和信息理论复杂性”中的技术,参见“第四届年度ACM-SIAM离散算法研讨会论文集”,第467-474页,1993年1月。

请注意, Collections.sort()算法得到一个“黑盒子”比较器,并使用它为每次比较产生的值 – 而不关心比较器幕后发生的事情。

Comparator和Comparable接口不进行任何排序,因此没有排序算法。 他们只是比较两个对象,如果要对这些对象的列表进行排序,则需要这些对象。