计算Quicksort的平均案例复杂度

时间:2017-04-24 04:08:36

标签: recursion time-complexity big-o quicksort recurrence

我正在尝试使用递归关系计算QuickSort的最差/最佳/平均情况的big-O。我的理解是,实现的效率取决于分区功能的好坏。

最差情况:枢轴总是留空一边

  • T(N)= N + T(N-1)+ T(1)
  • T(N)= N + T(N-1)
  • T(N)~N 2 / 2 => O(n^2)

最佳案例:枢轴分配元素

  • T(N)= N + T(N / 2)+ T(N / 2)
  • T(N)= N + 2T(N / 2)[Master Theorem]
  • T(N)~Nlog(N)=> O(nlogn)

平均情况:这是我对如何表示递归关系或如何一般地处理它感到困惑的地方。

我知道Quicksort的平均情况 big-O是O(nlogn)我只是不确定如何推导它。

1 个答案:

答案 0 :(得分:1)

当您选择枢轴时,您可以做的最差是0 |你可以做的最好的是n / 2 | N / 2。平均情况下会发现你更喜欢n / 4 | 3n / 4,假设均匀随机性。将其插入并在消除常数后得到O(nlogn)。