Heap sort costruisce un binary heap dall'array, poi estrae ripetutamente il massimo per produrre l'ordine ordinato. Funziona in O(n log n) ed è in-place.
L'idea
Un max-heap mantiene l'elemento più grande alla radice. Costruisci l'heap (O(n)), poi scambia la radice alla fine, riduci l'heap, e ri-heapify (sift down) — n volte.
Esempio
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
