Heap sort vytvoří binární haldu z pole, poté opakovaně extrahuje maximum a vytvoří seřazený porядок. Běží v O(n log n) a je in-place.
Myšlenka
Max-halda uchovává největší prvek v kořeni. Vytvořte haldu (O(n)), poté vyměňte kořen na konec, zmenšete haldu a znovu ji uspořádejte (sift down) — n krát.
Příklad
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
