我试图证明 Quicksort 算法的以下最坏情况,但遇到了一些麻烦。最初,我们有一个大小为 n 的数组,其中 n = ij。这个想法是,在快速排序的每个分区步骤中,您最终都会得到两个子数组,其中一个大小为 i,另一个大小为 i(j-1)。在这种情况下,i 是一个大于 0 的整数常数。我已经绘制了一些示例的递归树,并理解为什么这是最坏的情况,并且运行时间将是 theta(n^2)。为了证明这一点,我使用了迭代方法来求解递推方程:
T(n) = T(ij) = m if j = 1
T(n) = T(ij) = T(i) + T(i(j-1)) + cn if j > 1
T(i) = m
T(2i) = m + m + c*2i = 2m + 2ci
T(3i) = m + 2m + 2ci + 3ci = 3m + 5ci
所以看起来复发是:
j
T(n) = jm + ci * sum k - 1
k=1
在这一点上,我有点不知道该怎么做。看起来如果展开,最后的总和将导致 j^2,但我需要证明它以某种方式等于 n^2。任何有关如何继续此操作的解释将不胜感激。