我正在使用 Collections.sort()对一个 LinkedList 进行排序,其元素实现了 Comparable 接口(interface),因此它们按自然顺序排序。在 javadoc 文档中,它说此方法使用具有 n*log(n) 性能的 mergesort 算法。
我的问题是是否有更有效的算法来对我的 LinkedList 进行排序?
该列表的大小可能非常大,排序也非常频繁。
最佳答案
O(N log N)
非常好渐近。也就是说,有线性时间 O(N)
非基于比较的排序,例如计数排序和桶排序。这在例如您正在对数百万个整数进行排序,但它们介于 1..10 之间。
此外,如果列表“几乎已排序”,则据报道,在某些情况下,否则二次插入排序实际上会更好。
这是否适用,甚至是否值得实现,取决于您的分析结果。我会说,除非它显示出瓶颈,否则不要担心。
另见
相关问题
关于Java - Collections.sort() 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883821/