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

标签 algorithm sorting data-structures heap

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

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

最佳答案

是的,有备注。

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

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

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

Root | Heap | Sorted

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

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

Sorted | Heap | Root

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

关于algorithm - Heapsort可以应用于最小堆数据结构吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50942561/

相关文章:

algorithm - 在 LogSpace 中检测给定图是否为树

algorithm - 获取和设置像素亮度的通用算法?

arrays - 所有对之间的位差之和

java - 提取列表中给定数量的最大值

java - 倒排索引实现的不同数据结构

c++ - B-Tree节点 split 技术

python - 大型数据集的贪婪集覆盖有什么好的实现吗?

ios - [ valueForUndefinedKey :]: this class is not key value coding-compliant for the key appointmentDate. '-swift

java - 如何按字符串开头的数字对字符串数组进行排序?

c++ - 避免在 C++ 中使用结构填充