Heap sort constrói um heap binário a partir da matriz, depois extrai repetidamente o máximo para produzir ordem classificada. Funciona em O(n log n) e é in-place.
A ideia
Um max-heap mantém o maior elemento na raiz. Construa o heap (O(n)), depois troque a raiz pelo final, reduza o heap e re-heapify (sift down) — n vezes.
Exemplo
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
