Java 这是对多个链表进行排序的有效方法吗?

Java 这是对多个链表进行排序的有效方法吗?,java,list,linked-list,Java,List,Linked List,您有n个已排序的链表,每个链表的大小为n。链接列表引用了 存储在一个数组中。什么是合并n个链接的有效算法 是否将列表转换为单个已排序的链表 由于它们都已排序: 合并一个循环 检查所有已排序链表的第一个节点,并通过相互比较对其进行排序。 继续下一个节点并重复,直到命中null。 这是最有效的方法吗 只需将它们链接在一起或将它们转储到单个列表中,然后使用常规排序即可。这将为您带来卓越的性能。您的方式是n^2。缺少假设:链表中的元素是彼此相邻还是交错?{{1,2,3,5},{4,7,9,11}是否有效

您有n个已排序的链表,每个链表的大小为n。链接列表引用了 存储在一个数组中。什么是合并n个链接的有效算法 是否将列表转换为单个已排序的链表

由于它们都已排序:

合并一个循环 检查所有已排序链表的第一个节点,并通过相互比较对其进行排序。 继续下一个节点并重复,直到命中null。
这是最有效的方法吗

只需将它们链接在一起或将它们转储到单个列表中,然后使用常规排序即可。这将为您带来卓越的性能。您的方式是n^2。

缺少假设:链表中的元素是彼此相邻还是交错?{{1,2,3,5},{4,7,9,11}是否有效?我有3个链表,每个链表有3个元素吗?说明n.yes separate每个链表都已排序且元素数完全相同。那么交错也可以吗?不,我认为它们在列表中是连续的。关键字:n-way merge与链表的调整,例如,在他的示例中,如果您将所有列表转储到一个数组中,则该数组的大小为n^2 n个列表n@DavidCheung不,将所有元素放入列表只需要线性时间。是的,列表的大小为n^2,但排序只需要nlogn时间。是的,但您将读取n个大小为n*n的列表,以通读所有列表并形成一个大数组,整个算法复杂度为n^2+nlogn,这使得n^2只需将第一个列表的最后一个链接到第二个列表的第一个,您就可以非常高效地执行此操作,等等。这可以做得更好,因为列表已经排序。这只是一个N向合并。