一尘不染

Java-Collections.sort()性能

algorithm

我使用Collections.sort()对LinkedList进行排序,其元素实现Comparable接口,因此它们以自然顺序排序。在javadoc文档中,该方法使用具有n * log(n)性能的 mergesort 算法。

我的问题是是否有一种更有效的算法对我的LinkedList进行排序?

该列表的大小可能很大,排序也将非常频繁。

谢谢!


阅读 667

收藏
2020-07-28

共1个答案

一尘不染

O(N log N)渐近地非常好也就是说,存在O(N)基于线性时间非比较的排序,例如计数排序和存储桶排序。例如,当您要对数百万个整数进行排序,但它们之间的整数在1..10之间时,此功能很有用。

同样,如果列表是“几乎已排序的”,则在某些情况下,其他情况下的二次插入排序实际上会更好。

这是否适用,甚至值得实施,取决于您的分析结果。我要说的是,除非它显示出瓶颈,否则请不要担心。

也可以看看

2020-07-28