随机快速排序枢轴选择,25%-75%分割

时间:2013-07-22 18:51:41

标签: algorithm big-o quicksort asymptotic-complexity master-theorem

我开始知道,在Randomized快速排序的情况下,如果我们选择枢轴,它至少会给比例25%-75%,那么运行时间为{{1} }。 现在我也开始知道我们可以用大师定理来证明这一点。

但我的问题是,如果我们在每个步骤中将数组拆分为25%-75%,那么我将如何定义O(n log n)以及如何在T(n)中证明运行时分析?

1 个答案:

答案 0 :(得分:1)

您可以使用Master theorem来查找此类算法的复杂性。在这种特殊情况下假设,当您将数组分成两部分时,这些部分中的每一部分都不大于初始数组的3/4。然后,如果你寻找上限,T(n) < 2 * T(3/4 * n) + O(n)T(n) = 2 * T(3/4 * n) + O(n)。 Master定理为您提供了这个等式的解决方案。

更新:虽然Master定理可以解决这种递归方程,但在这种情况下,它给出的结果比预期的O(n * log n)差。然而,它可以通过其他方式解决。如果我们假设一个pivot总是以较小的部分> = 1/4大小的方式分割数组,那么我们可以将递归深度限制为log_ {4/3} N(因为在每个级别上数组的大小减少至少4/3次)。每个递归级别的时间复杂度总共为O(n),因此我们有O(n)* log {4/3} n = O(n * log n)总体复杂度。

此外,如果您想要更严格的分析,可以考虑一篇Wikipedia文章,有一些很好的证明。