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 "Stack depth for quick sort" 中提到
- QUICKSORT 中的第二次递归调用不是必需的,它可以通过迭代控制结构来避免。这种方法称为尾递归
修改版的快速排序:
QUICKSORT'(A,p,r)
while p < r
q=PARTiTION(A,p,r)
QUICKSORT'(A,p,q-1)
p=q-1
空间复杂度 O(log n)
我无法理解空间复杂度是如何降低的。
我不认为它的尾递归
谁能解释一下空间复杂度如何降低(调用如何使用堆栈)或任何其他更好的方法来实现这一点。