我的意思是我知道Wiki说它用于调用堆栈。但究竟什么存储在那里? 对于堆栈中排序算法的哪些数据,需要内存?
答案 0 :(得分:0)
在大多数常见实现中,堆栈存储应该稍后排序的范围的起始和结束索引。
递归版:
int i = partition(a, l, r)
here l,i => quicksort(a, l, i)
and here i + 1, r => quicksort(a, i + 1, r)
具有显式堆栈的版本(if-condition以提供较小的堆栈深度):
int i = partition(a, l, r)
if (i - 1 > r - i)
s.push(l, i - 1)
s.push(i + 1, r)
else
s.push(i + 1, r)
s.push(l, i - 1)