Java - Collections.sort() 性能

标签 java algorithm collections sorting

我正在使用 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/

相关文章:

c# - 如何将两个 C# 列表拼接成一个?或者可能使用不同的集合类型?

java - Eclipse 3.5 中的 FreeMarker 编辑器给出非法参数异常

Java Jersey 声明性超链接配置

java - 适配器类实现并创建 MouseAdapter 实例

algorithm - 如何根据以下代码计算 Big-O Notation

algorithm - 查找字符串中的所有字谜 O(n) 解决方案

java - 出现错误 : The request sent by the client was syntactically incorrect

排序多重集的算法

java - 如何在不使用 foreach 的情况下合并两个列表?

java - 如何使用 Stream 拆分集合中的奇数和偶数以及两者的总和