Heapsort可以应用于最小堆数据结构吗?

Can Heapsort be applied on Min Heap Data Structure?

我读过并被告知 Heapsort 只能应用于最大堆,但这篇文章 here 另有说明。

那么,HeapSort是不是也可以应用在最小堆上呢?

是的,有备注。

Heapsort 的工作原理是首先创建一个堆(可以是 min 或 max),然后重复提取堆的根,将其放入目标数组,并恢复减少的堆。

通常,这是就地执行的,因此目标数组与源数组重合,并且在有空间的地方复制根。堆不会移动,它会通过每次丢弃最后一个叶子来缩小。

使用通常的索引方案,我们对数组进行以下分区:

Root | Heap | Sorted

对于最大堆,在排序结束时,元素将按递增顺序存储,对于最小堆,将按降序存储。

如果想倒序,可以排序后翻转整个数组,也可以改变索引方案实现分区

Sorted | Heap | Root

不确定这两种方法中哪种方法最快。