Mergesort算法使用 n (输入大小)额外内存空间。我想知道是否可以将额外的内存空间从 n 减少到 n / 2 。
答案 0 :(得分:1)
如果您正在对范围[left, right]
进行递归调用,则将此范围的前半部分放入临时存储中,并将合并结果直接存储在此范围内。例如,如果我们的[left, right]
范围包含:
[left, right] = 1 4 8 2 5 9
我们制作temp = [1 4 8]
然后开始将[left, right]
的后半部分与temp
合并并覆盖[left, right]
。