【发布时间】:2019-09-26 14:13:49
【问题描述】:
我必须在链表上实现自然归并排序(这很容易),但我不能更改节点的“下一个”属性,只能交换它们的值。我也不能倒退,因为节点没有“prev”属性。 (链表没有随机访问)而且我无法创建新节点。
我只需要一些关于合并功能应该如何的提示。
我知道在合并之前保持两个子列表有序是关键,但我找不到方法。
这是 Node 类。他们保存了一个通用的 Item 和下一个节点的地址
private class Node {
Item item;
Node next;
public String toString() {
if (next == null) return "[" + item + "]" + "->" + "null";
return "[" + item + "]" + "->" + next.item + ", ";
}
}
【问题讨论】:
-
@user3386109 原位合并排序实现非常简单,而且非常漂亮。再速度,算是值得成为STL的一部分了。
-
@user3386109 inplace_merge
-
@user58697 嗯,好的,谢谢,我想是时候再看看了。
-
@user3386109 看我的回答
标签: java algorithm sorting linked-list mergesort