Java 覆盖比较器接口的比较方法时使用了什么排序算法? Collections.sort(ar,新的Comparator(){ @凌驾 公共整数比较(区间o1,区间o2){ 返回值(Integer.valueOf(o1.getEnd())) .compareTo(Integer.valueOf(o2.getEnd()); } });

Java 覆盖比较器接口的比较方法时使用了什么排序算法? Collections.sort(ar,新的Comparator(){ @凌驾 公共整数比较(区间o1,区间o2){ 返回值(Integer.valueOf(o1.getEnd())) .compareTo(Integer.valueOf(o2.getEnd()); } });,java,algorithm,sorting,collections,Java,Algorithm,Sorting,Collections,大家好,我有上面的java代码。这里,ar是一个列表,interval是一个包含两个整数变量的类:Start和End。我想知道,当我们重写上述比较器接口的比较方法时,遵循的排序算法是什么。我知道,默认情况下,Collections.sort()和array.sort()使用Timsort算法。任何帮助都将不胜感激。非常感谢。Collections.sort()使用的变体是 从: 该实现改编自Tim Peters的Python列表排序 (蒂姆索特)。它使用了Peter McIlroy的“乐观排序”

大家好,我有上面的java代码。这里,ar是一个列表,interval是一个包含两个整数变量的类:Start和End。我想知道,当我们重写上述比较器接口的比较方法时,遵循的排序算法是什么。我知道,默认情况下,Collections.sort()和array.sort()使用Timsort算法。任何帮助都将不胜感激。非常感谢。Collections.sort()使用的变体是

从:

该实现改编自Tim Peters的Python列表排序 (蒂姆索特)。它使用了Peter McIlroy的“乐观排序”中的技术 和信息论的复杂性”,载于第四届会议录 ACM-SIAM离散算法年度研讨会,第467-474页,1月 1993年

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

Collections.sort()使用的变量是

从:

该实现改编自Tim Peters的Python列表排序 (蒂姆索特)。它使用了Peter McIlroy的“乐观排序”中的技术 和信息论的复杂性”,载于第四届会议录 ACM-SIAM离散算法年度研讨会,第467-474页,1月 1993年


请注意,
Collections.sort()
算法获得一个“黑盒”比较器,并使用它为每次比较生成的值,而不关心比较器幕后发生了什么。

比较器和Compariable接口不进行任何排序,因此没有排序算法。它们只是比较两个对象,如果您想对这些对象的列表进行排序,您需要这样做。

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

那么,基本上你是说,sort()方法在这里得到一个整数差的列表,然后对其应用Timsort?@priban91不,它得到一个对象的列表,以及一个比较器,可以表示任意两个元素ab?它是应用排序所需的关于元素的唯一知识,不需要元素的内部结构。只有在比较器中才能访问元素。@amit感谢您的解释。帮了很多忙!所以,基本上你是说,sort()方法在这里得到一个整数差的列表,然后对其应用Timsort?@priban91不,它得到一个对象列表和一个比较器,可以说是任意两个元素ab?它是应用排序所需的关于元素的唯一知识,不需要元素的内部结构。只有在比较器中才能访问元素。@amit感谢您的解释。帮了很多忙!
 Collections.sort(ar, new Comparator<Intervals>() {
                      @Override
                        public int compare(Intervals o1, Intervals o2) {                
                                return (Integer.valueOf(o1.getEnd()))
                                        .compareTo(Integer.valueOf(o2.getEnd()));
                        }
                    });