【发布时间】:2020-02-26 06:57:41
【问题描述】:
对于快速排序的 CLRS 算法,
我无法跟踪输入 A = [2,1,3] 的所有调用。
QuickSort(A,p,r)
if p < r
q = Partition(A,p,r)
QuickSort(A,p,q-1)
QuickSort(A,q+1,r)
Partition(A,p,r)
x = A[r]
i = p - 1
for j = p to r - 1
if A[j] <= x
i = i + 1
swap (A[i], A[j])
swap(A[i+1], A[r])
return i+1
这是我对数组 A 的函数调用:
快速排序(A,1,3)
分区(A,1,3)
快速排序(A,1,2)
分区(A,1,2)
- 快速排序(A,1,0)
- 快速排序(A,2,3)
- 分区(A,2,3)
- 快速排序(A,1,2)
为什么从 8 点开始循环?
【问题讨论】:
标签: recursion computer-science quicksort callstack