一尘不染

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

algorithm

 Collections.sort(ar, new Comparator<Intervals>() {
                      @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算法。任何帮助将不胜感激。非常感谢。


阅读 246

收藏
2020-07-28

共1个答案

一尘不染

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

javadocs

该实现改编自Tim Peters针对Python的列表排序(TimSort)。它使用了Peter
McIlroy的“乐观排序和信息理论复杂性”中的技术,在1993年1月举行的第四届ACM-SIAM离散算法年会上,第467-474页。

请注意,该Collections.sort()算法会获得一个“黑匣子”比较器,并使用每次比较所产生的值-无需理会比较器幕后的情况。

2020-07-28