在Cormen的“算法简介”书中,他们使用称为“合并”的过程
它是著名的合并排序算法的辅助
该书指出“合并”过程的θ(n)| n = r-p + 1复杂度;我想证明这一点,到目前为止,我们已经进行了分析(我打算对最坏的情况进行建模)
但是,要想得出最坏的情况,第12至18行有些困难,因为我不得不脑子里想出太多的选择和可能性,这有点让人不知所措。到目前为止,我认为当Left(L)子数组中的所有元素都大于right(R)子数组中的所有元素时,会发生最坏的情况,但我不确定。
有什么建议吗? 预先感谢。
edit:尽管如此,在书中,它们并未考虑第13至18行;你能告诉我为什么吗?以及如何在不考虑这些限制的情况下得出复杂性?
答案 0 :(得分:0)
如果使用“ charge”参数,则更容易证明。请注意,最后一个循环在p - r + 1
中分配了A
个元素。现在,只需遍历其余代码,并将每个不变的工作单元“充电”到那些元素中即可。只要每个函数都能获得恒定的最大电荷数-这很容易显示-该算法的运行时间为Omega(p - r + 1) = Omega(n)
。