我有一个棘手的问题,我似乎无法弄明白。 我们有一个长度为n + m的数组。
数组由n个已排序的数字组成,然后是m个已排序的数字。例如:
2 5 8 11 15 17 19 3 4 9 10
然后n = 7且m = 4.
我需要在O(n)
时间内完全对整个数组进行排序,而不是使用额外的数组/列表。
答案 0 :(得分:0)
您需要执行合并排序的最后阶段,其中合并两个排序列表/数组。增加的复杂性是你想要O(1)内存使用。这可以按如下方式完成。
如果您有一个大小为n + m
i
[0 .. n)和j
[n .. n + m)简而言之,你有三个阵列
当你进展i+j
时,你会在一次传递中结束并拥有一个排序数组。