Ниже приведен псевдокод пирамидальной сортировки на массивеHeap Сортировка Сложность
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-КУЧА имеет сложность O (N) и MAX-HEAPIFY имеет сложность O (h) где h - высота кучи, которая имеет максимальное значение logn.
Я полностью не понимаю, почему у HeapSort есть сложность nlogn. Я понимаю, что у нас есть n итераций с каждым MAX-HEAPIFY. Но вызов MAX-HEAPIFY получает HEAP уменьшающегося размера на каждой итерации. Каким образом каждая итерация может иметь сложность O (lgn)? Плотно ли она связана? Где я могу увидеть математическое доказательство того же?
Связанный: http://stackoverflow.com/questions/39691923/build-max-heap-running-time-for-array-sorted-in-decreasing-order –