在最小堆或最大堆上使用时,堆排序更有效吗?

时间:2013-12-18 00:51:41

标签: algorithm time heap time-complexity heapsort

只是一个普遍的问题......

重申标题:

在minheap或maxheap上使用时,heapsort是否更有效?

注意:使用基于阵列的实现

1 个答案:

答案 0 :(得分:0)

以下是我对它的看法,我可能不对,但是这里有。从理论上讲,它们同样有效。

堆排序的工作原理基本上是将所有元素放入(最小)堆中,然后,现在它们按堆顺序重复删除最小元素直到堆为空,从而按递增顺序提供数据。它是O(nlogn),因为我们对数据进行线性传递,并且堆支持对数据中每个元素所做的工作的日志插入/删除。

如果我们使用了最大堆,我们将重复调用getMax()。这会产生“递减顺序”,但您可以轻松地在最终数组中从右向左插入这些最大值,以获得增加的顺序。