如何在快速排序中获得O(log n)空间复杂度?

时间:2013-03-23 07:10:34

标签: algorithm sorting quicksort

快速排序的天真递归版本:

QUICKSORT(A,p,r)
 if p < r then 
   q=PARTITION(A,p,r)
   QUICKSORT(A,p,q-1)
   QUICKSORT(A,q+1,r)

这使用O(n)额外空间

在Cormen ch 7-4“堆叠深度快速排序”中提到了 - QUICKSORT中的第二次递归调用是不必要的,可以通过迭代控制结构来避免。这种方法称为尾递归

quicksort的修改版本:

QUICKSORT'(A,p,r)
 while p < r
   q=PARTiTION(A,p,r)
   QUICKSORT'(A,p,q-1)
   p=q-1

空间复杂度O(log n)

我无法理解空间复杂性是如何降低的。
我不认为它的尾递归

任何人都可以解释空间复杂度如何降低(调用如何使用堆栈)或任何其他更好的方法来实现这一点。

0 个答案:

没有答案