下面是堆排序的伪代码阵列上堆排序复杂
HEAPSORT(A)
BUILD-MAX-HEAP(A)
for i = A.length downto 2
exchange A[1] with A[i]
A.heapsize = A.heapsize - 1
MAX-HEAPIFY(A,1)
很明显,我认为BUILD-MAX-HEAP度为O(n)和MAX-HEAPIFY的复杂有复杂O(h)其中h是具有logn最大值的堆的高度。
我完全不明白的是为什么HeapSort具有nlogn的复杂性。我明白我们有每次MAX-HEAPIFY的n次迭代。但是他的MAX-HEAPIFY调用在每次迭代中都会缩小尺寸。那么每个迭代如何可以具有O(lgn)的复杂性?它紧紧地绑定了吗?在哪里我可以看到相同的数学证明?
相关:http://stackoverflow.com/questions/39691923/build-max-heap-running-time-for-array-sorted-in-decreasing-order –