【发布时间】:2011-02-22 10:51:35
【问题描述】:
我使用Collections.sort() 对一个LinkedList 进行排序,其元素实现了Comparable 接口,因此它们按自然顺序排序。在 javadoc 文档中,它说此方法使用 mergesort 算法,该算法具有 n*log(n) 性能。
我的问题是是否有更有效的算法来对我的 LinkedList 进行排序?
该列表的大小可能非常高,排序也非常频繁。
【问题讨论】:
-
你是说内存还是cpu效率?
-
“非常高”是什么意思? 1000, 1000000, 100000000?
-
因为正如许多人所指出的那样,O(n log n) 是基于比较的排序的可证明的下限,你真的不能做得更好。我认为人们可以为您提供更多帮助的唯一方法是,如果您提供有关您正在排序的内容或为什么需要对其进行排序的更多信息,以便我们可以根据您的具体情况推荐更好的解决方案。 =]
-
@iffy,你忘记了 bogosort:那是 O(1),不是吗?
-
我相信该算法已被 JDK 7 中的双轴快速排序所取代。
标签: java algorithm collections sorting