如何合并排序两个列表节点而不创建第三个?

时间:2014-10-18 17:06:37

标签: sorting merge

给定两个列表节点,我需要实现合并排序而不创建第三个列表节点。因此,如果列表节点1具有1,2,4,6,8并且列表节点2具有3,5,9,11,15,则输出应该在第一个列表节点中为1,2,3,4,5, 6,8,9,11,15。我被卡住了。使用第三个列表节点很容易,但我不知道如何用两个节点可靠地完成它。

1 个答案:

答案 0 :(得分:0)

给出2个列表A,B。

我不确定你的列表是否已经排序,但如果是这样,只需循环两个数组,并在需要时将数组B中的元素插入数组A.如果B较长,只需将其余部分(一旦A迭代完毕)附加到A上。

否则,当B完成循环时,A会更长时间。

否则你可以有一个偏移量,只需将已排序的数据添加到A中,使用A [0,offset]作为第三个数组。

另一种选择是将所有B附加到A上,然后使用常规合并排序对A进行排序。

这些选项都不需要新阵列,所有这些选项都可以优化,不占用更多内存。