要存储quicksort所需的内容,O(logn)附加内存

时间:2018-02-13 03:05:10

标签: algorithm quicksort

我的意思是我知道Wiki说它用于调用堆栈。但究竟什么存储在那里? 对于堆栈中排序算法的哪些数据,需要内存?

1 个答案:

答案 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)