Heap sort construye un heap binario a partir del array, luego extrae repetidamente el máximo para producir orden ordenado. Se ejecuta en O(n log n) y es in-place.
La idea
Un max-heap mantiene el elemento más grande en la raíz. Construye el heap (O(n)), luego intercambia la raíz al final, reduce el heap y re-heapifica (sift down) — n veces.
Ejemplo
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
