如果拆分为5:n-5,则快速排序,那么时间复杂度将是多少?

时间:2015-08-21 19:05:49

标签: algorithm sorting pivot quicksort analysis

当分区大小之比为5:n-5或类似1:19时,如何找到快速排序的复杂性?在这些情况下,我真的不明白如何计算算法的复杂性。

1 个答案:

答案 0 :(得分:4)

一般情况下,请记住以下几点:

  • 如果将数组拆分为两个由每个点的a:b固定比率定义的片段,则在O(log n)拆分后,子阵列将缩小到0。

  • 如果将一个数组分成两个部分,其中一个尺寸是常数k,则需要Θ(n / k)分割才能使子阵列尺寸减小到0。

现在,考虑一下quicksort在递归的每个级别所做的工作。在每一层,它需要与层中元素的数量成比例地工作。如果您使用第一种方法并且具有类似于1/20:19/20的分割,那么每层最多只有n个元素,但只有O(log n)层,因此完成的总工作量为O(n log) n),这很棒。

另一方面,假设你总是拉掉五个元素。然后每个步骤中较大的数组将具有大小n,n - 5,n - 10,n - 15,...,10,5,0。如果你计算出数学并总结它,这可以得到Θ (n 2 )总工作量,效率不高。

一般来说,尽量避免在快速排序中一次拆分固定数量的元素。这给你一个你需要担心的堕落情况。