【发布时间】:2017-11-19 00:54:35
【问题描述】:
对链表进行排序最简单的方法是什么?我有一个节点列表,每个节点都有 2 个属性,一个 int 和一个 string。我应该如何按整数升序对列表进行排序?
【问题讨论】:
-
您可以拨打
Collections#sort。但请注意,使用LinkedList时运行时将非常不理想。考虑将所有内容添加到更好的数据结构中,然后对其进行排序。之后从它创建一个链表。或者,只需将所有元素添加到PriorityQueue,然后将pull中的所有元素(它自动排序),将它们添加到新的LinkedList。 -
请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作摘要,以及对您在解决它时遇到的困难(help center,How to Ask)。
-
如果您自己实现了列表,最简单的方法是 1) 将节点放入数组中,2) 使用 Arrays::sort 对节点进行排序,3) 从排序后的节点重建列表。
-
链表的随机访问性能较慢。出于这个原因,合并排序优于其他
O(n log n)排序算法。 -
@Zabuza - collections#sort 如何为链表实现?使用具有小(26 到 32)个节点引用数组的自下而上合并排序相当快。对于链表来说,自上而下的合并排序稍微慢一些,它重复扫描子列表以拆分它们。自下而上的归并排序都是顺序访问。
标签: java sorting linked-list nodes