【发布时间】:2013-07-10 16:50:41
【问题描述】:
我知道这个问题: inplace_merge: What causes a complexity of N*log(N) vs. N-1?
但我发现答案不令人满意,因为我对 A 真正感兴趣的部分没有得到清楚的解释。 更具体地说,不清楚(对我来说:))为什么不能 inplace_merge 在线性时间内进行就地合并而无需任何额外的内存,只需从开始和当前项目大于第二范围(中间,结束)就可以恒定时间交换。
【问题讨论】:
我知道这个问题: inplace_merge: What causes a complexity of N*log(N) vs. N-1?
但我发现答案不令人满意,因为我对 A 真正感兴趣的部分没有得到清楚的解释。 更具体地说,不清楚(对我来说:))为什么不能 inplace_merge 在线性时间内进行就地合并而无需任何额外的内存,只需从开始和当前项目大于第二范围(中间,结束)就可以恒定时间交换。
【问题讨论】:
假设您正在合并两个已排序的子序列:
11, 12, 13, 14 1, 2, 3, 4
^ ^
1
1, 12, 13, 14 11, 2, 3, 4
^ ^
11
1, 11, 13, 14 12, 2, 3, 4
^ ^
12
1, 11, 12, 14 13, 2, 3, 4
^ ^
13
1, 11, 12, 13 14, 2, 3, 4
^ ^
您已到达其中一个子序列的末尾,因此您停下来。合并后的序列是否排序?
【讨论】: