【发布时间】:2018-02-27 18:51:28
【问题描述】:
假设给定 k 个排序数组,每个数组有 n 个元素,我们希望将它们组合成一个包含 kn 个元素的数组。
我的方法:我的方法是重复使用 Merge 子例程,首先合并前两个数组,然后将结果与第三个数组合并,然后与第四个数组合并,以此类推,直到我合并第 k 个和最后一个输入数组。我的问题是这个连续合并算法的运行时间是多少,作为 k 和 n 的函数,忽略常数因素和低阶项?
合并子程序:
i := 1
j := 1
for k := 1 to n do
if C[i] <D [j] then
B[k] :=C[i]
i := i +1
else
B[k] :=D[j]
j := j +1
【问题讨论】: