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

Heap sort, min-heap to be used or max?

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

这两种方法都可以奏效。通常,您会使用有序的最大堆,以便最大的元素位于数组的最左侧。这样,当您将元素从堆中出队并移除以将它们放在最终位置时,您可以将它们从右到左(按降序)放置在数组的远端,而不会踩到其他堆元素的顶部.

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