具有常分区的快速排序算法

时间:2014-10-05 20:45:16

标签: algorithm sorting data-structures time-complexity quicksort

我遇到了一个关于快速排序算法的问题。这是来自中国大学CS 234数据结构的2010年中期考试。

假设在快速排序中,分区过程需要C次,(消耗恒定时间)。如果我们使用随机数据作为输入,那么Randomized-Quick Sort的顺序(时间复杂度)是什么?

任何人都可以用这种方式描述时间的复杂性吗?

编辑:

我计算这些关系。我的工作是对的?谁能澄清我?

Best Case: T(n)=2T(n/2)+C= Theta (n)

Worst Case: T(n)=2T(n-1)+C= Theta (n)

1 个答案:

答案 0 :(得分:0)

您正在寻找预期的运行时间:T(n)的预期值。所以让T(n)成为运行时的随机变量。有n个可能的结果,每个结果对应一个分区:

T(0) + T(n-1) + c
T(1) + T(n-2) + c
...
T(n-1) + T(0) + c

其中一个将被挑选,选择X(i) = 1 if T(i) + T(n - i - 1) + c,否则0T(n)的重复可以写成:

T(n) = X(0)(T(0) + T(n-1) + c) + ... + X(n-1)(T(n-1) + T(0) + c)

现在计算期望值,我们写道:

E( T(n) ) = E( X(0)(T(0) + T(n-1) + c) + ... + X(n-1)(T(n-1) + T(0) + c) )
          = (1/n)E(2T(0) + 2T(1) + ... + 2T(n-1) + cn)
          = (2/n)(E((T(0)) + ... + E(T(n-1))) + c.

通过期望的线性获得第三条线。在这一点上,我们将猜测E( T(i) )的答案并使用归纳来证明它。这种技术称为替代。

  • 猜猜:E( T(i) ) <= AiA > 01 <= i < n
  • Base:对于i = 1,数组已经排序,因此预期的运行时间是恒定的。
  • 归纳:E( T(n) ) <= (2A/n)(n(n-1)/2) = A(n-1) <= An

所以声明适用于n。预计运行时间为O(n)