Algorithm 常数分割快速排序算法

Algorithm 常数分割快速排序算法,algorithm,sorting,data-structures,time-complexity,quicksort,Algorithm,Sorting,Data Structures,Time Complexity,Quicksort,我遇到了一个关于快速排序算法的问题。这是来自中国大学2010年数据结构期中考试,CS234 假设在快速排序中,分区过程需要C次(消耗常量时间)。如果我们使用随机数据作为输入,随机快速排序的顺序(时间复杂度)是什么 有人能用这种方式描述时间复杂性吗 编辑: 我计算这些关系。我的工作对吗?有人能向我澄清一下吗 Best Case: T(n)=2T(n/2)+C= Theta (n) Worst Case: T(n)=2T(n-1)+C= Theta (n) 您正在查找预期运行时间:预期值T(n)

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

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

有人能用这种方式描述时间复杂性吗

编辑:

我计算这些关系。我的工作对吗?有人能向我澄清一下吗

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

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

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

T(0) + T(n-1) + c
T(1) + T(n-2) + c
...
T(n-1) + T(0) + c
其中一个将被选取,如果选取了T(i)+T(n-i-1)+c,则设
X(i)=1,否则设
0
T(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))0
    1答案可以在维基百科上找到亲爱的@LoïcFaure Lacroix,我知道Theta(n),但我不知道怎么得到它!好的课堂讲稿在这里:。我不知道你说的“常数分割”是什么意思。分区/排序的每次迭代都使用不同的值。亲爱的@jww,假设我们有一个算法,分区总是花费C次。现在,T(N)是什么?交叉张贴:。请