我怎样才能证明quicksort的主定理

时间:2016-10-19 20:24:37

标签: algorithm math quicksort

我有一个关于算法的问题,快速排序。 有人能解释我如何得到结果(证明)2T(n / 2)+Θ(n)? 这个结果意味着什么:T(n-1)+Θ(n)。

感谢所有答案。

2 个答案:

答案 0 :(得分:6)

大师定理指出,

对于任何main function

  1. 如果1st condition为常量Epsilon > 0,则为T(n)
  2. 如果2nd condition,则formula
  3. 如果3rd condition,某些常数为epsilonfunction为某个常数c < 1且所有n足够T(n),那么function
  4. 至于你的,
    a = 2, b = 2
    Theta
    在这里,
    complexity(第二个条件)
    所以复杂性将是:2nd question

    关于你的第二个问题,要理解这个函数2nd question,你需要理解分而治之的方法。在快速排序中,对于 n 项目,如果您将最后一个值作为支点,则项目数量将减少 1 ,这会将项目数量减少为 (n-1),现在如果你递归调用快速排序,将最后一个值作为数据透视表,每次减少一个项目。因此,复杂性将为http://www.bootply.com/86704,而当您将中间值作为支点时则不是这种情况。

答案 1 :(得分:0)

在这里得到这个,我将用O求解T(n-1)+ O(N)我的意思是theta 所以让m = 2 ^ n使得log(m)= n

现在让我们声明一个新函数S(m)= T(log m)

现在让我们说

S(m)= S(m / 2)+ log(m)

现在您是否同意S(m / 2)+ log(m)等于T(n-1)+ n?

因为如果m = 2 ^ n,那么m / 2 = 2 ^(n-1)使得对数m(n-1),我们已经建立了logm =(n)

现在我们建立了S(m / 2)+ log(m)= T(n-1)+ n让我们求解 S(m / 2)+ log(m)具有主定理,它将借助于扩展情况2陈述press the link to see it,因此如果遵循它,我们得到log2(1)= 0 且当k为1时f(m)= logm = O(logm)= O((n ^ 0)* logm)从而得到S(m)= O(log ^ 2 m) 或O(n ^ 2),它被认为是快速排序的最坏情况