堆排序,使用最小堆还是最大?

时间:2017-07-20 14:51:51

标签: data-structures heap heapsort

对于堆排序,如果我们想按升序对数组进行排序,那么堆应该在最大堆还是最小堆中进行转换?

1 个答案:

答案 0 :(得分:3)

任何一种方法都可以起作用。通常,您使用最大堆排序,以便最大元素位于数组的最左侧。这样,当您从堆中取出并从堆中删除元素以将它们放在最终位置时,您可以将它们从数组的远端从右到左(按降序排列)放置,而不会踩到其他堆元素的顶部

原则上你也可以在最右边的位置构建一个最小元素的最小堆,然后将小元素出列并将它们移动到最左侧,尽管我以前从未见过这样做过。