下面是堆排序的僞代碼陣列上堆排序複雜
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 –