预期运行时间与运行时间有什么区别?您能否解释一下为什么随机快速排序的预期运行时间是nlogn的Theta。
答案 0 :(得分:0)
预期运行时间: 通常,预期运行时间仅表示随机输入的平均运行时间。但是,如果是关于随机算法(在这种情况下就是这种情况),则意味着该算法正在运行具有该算法做出的随机选择的输入。
打样时间: 关于证明快速排序的theta n(logn)运行时间,它将涉及更复杂的数学,这是CMU的参考资料,用于证明theta n(logn)(https://www.cs.cmu.edu/~avrim/451f11/lectures/lect0906.pdf)的运行时间。
不要为复杂的数学而烦恼,我只专注于我们如何凭直觉来理解这段运行时间
非随机输入:如果每个枢轴的排名介于中间50%,即介于第25个百分点和第75个百分点之间,则它将元素分割成至少25%和至多75% 。然后拆分数据得到O(logn)并调用它们中的每一个给出nlog(n)的总运行时间theta。确保您了解为什么这个非随机的快速排序的平均运行时间theta为nlog(n)。
现在让我们谈谈随机快速排序的预期运行时间...
当输入是随机的时,枢轴不会保证在中间50%。但是,当我们从随机枢轴开始时,枢轴将在大约一半的时间内降落在中间的50%中。想象一下,您要掷硬币直到获得n个头。通常情况下,您只需要翻转2k次即可。同样,Quicksort的递归将在非随机输入所需次数的预期2倍时终止,该次数只能是O(logn)的常数倍。调用树的每个级别将被调用n次,预期的总工作量仍为theta(nlogn)。