【问题标题】:Can Heapsort be applied on Min Heap Data Structure?堆排序可以应用于最小堆数据结构吗?
【发布时间】:2018-06-20 07:26:15
【问题描述】:

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

那么,HeapSort 是否也可以应用在 Min heap 上?

【问题讨论】:

  • 你在哪里读到的?这是错误的,最大堆在概念上与最小堆相同,您只需翻转所有比较运算符,或者等效地您也可以否定所有值。
  • 所以堆排序也可以应用于最小堆?
  • 是的。没有理由不能。

标签: algorithm sorting data-structures heap


【解决方案1】:

是的,有备注。

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

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

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

Root | Heap | Sorted

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

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

Sorted | Heap | Root

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 2011-03-07
    • 2020-06-27
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    相关资源
    最近更新 更多