使用递归版本的heapify时,堆排序是否是就地排序算法?

时间:2019-01-21 17:17:29

标签: algorithm sorting recursion space-complexity heapsort

我知道我们正在使用相同的数组(必须对它进行排序)构造一个max-heap,因此那里不需要额外的内存(来自here)。

但是我的问题是关于堆化函数(当我遵循Introduction to Algorithms, CLRS时是递归的),我们在构建堆时(以及在交换堆的第一个元素时即最大和最后一个元素时使用)堆,然后再次重新堆化数组。)

在最坏的情况下,由于在每个递归调用上都存储了堆栈指针,因此对该递归函数的调用可能占用O(log(n))

因此,我的问题是,当this维基文章说heapsort是一种就地排序算法时,是否隐含地意味着它假设的heapify函数是非递归函数(它不会占用任何(非恒定)额外的空间)。还是我想念的东西?

使用递归heapify函数的heapsort的空间复杂度是否为O(log(n))

0 个答案:

没有答案