合并辅助程序的复杂性

时间:2019-05-10 23:56:09

标签: algorithm sorting merge mergesort array-merge

在Cormen的“算法简介”书中,他们使用称为“合并”的过程

enter image description here

它是著名的合并排序算法的辅助

enter image description here

该书指出“合并”过程的θ(n)| n = r-p + 1复杂度;我想证明这一点,到目前为止,我们已经进行了分析(我打算对最坏的情况进行建模)

enter image description here

但是,要想得出最坏的情况,第12至18行有些困难,因为我不得不脑子里想出太多的选择和可能性,这有点让人不知所措。到目前为止,我认为当Left(L)子数组中的所有元素都大于right(R)子数组中的所有元素时,会发生最坏的情况,但我不确定。

有什么建议吗? 预先感谢。

edit:尽管如此,在书中,它们并未考虑第13至18行;你能告诉我为什么吗?以及如何在不考虑这些限制的情况下得出复杂性?

1 个答案:

答案 0 :(得分:0)

如果使用“ charge”参数,则更容易证明。请注意,最后一个循环在p - r + 1中分配了A个元素。现在,只需遍历其余代码,并将每个不变的工作单元“充电”到那些元素中即可。只要每个函数都能获得恒定的最大电荷数-这很容易显示-该算法的运行时间为Omega(p - r + 1) = Omega(n)