我有一个关于算法的问题,快速排序。 有人能解释我如何得到结果(证明)2T(n / 2)+Θ(n)? 这个结果意味着什么:T(n-1)+Θ(n)。
感谢所有答案。
答案 0 :(得分:6)
大师定理指出,
关于你的第二个问题,要理解这个函数,你需要理解分而治之的方法。在快速排序中,对于 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),它被认为是快速排序的最坏情况