【发布时间】:2020-01-28 22:26:50
【问题描述】:
MergeSort 中的合并过程无法就地运行。 这是我的解释:
它加起来了吗?
A = 5,1,9,2,10,0
“q”:指向索引 2 处数组中间的指针。
我们正在将 q 及其左侧的元素与 q 右侧的元素合并。
A= 1,5,10,0,2,12
我们用“i”指向左边的开始,用“j”指向右边的开始。
我们用“k”指向数组中的当前位置。
算法从 i=0、j=3、k=0 开始。
如果我们就地合并:for k=0:i= 0, j= 3,0 A[k] =A[j] andj++
结果数组:A={0,5,10,0,2,12}
如我们所见,我们已经失去了值 1。
我们将继续丢失值,例如在下一次迭代中:
对于 k=1:i= 0, j= 4,0
结果数组:A={0,0,10,0,2,12}
【问题讨论】:
标签: arrays sorting merge mergesort in-place