Το Heap Sort κατασκευάζει ένα δυαδικό heap από τον πίνακα, και στη συνέχεια εξάγει επανειλημμένως το μέγιστο για να παράγει ταξινομημένη σειρά. Εκτελείται σε O(n log n) και είναι in-place.
Η ιδέα
Ένα max-heap κρατά το μεγαλύτερο στοιχείο στη ρίζα. Κατασκευάστε το heap (O(n)), στη συνέχεια ανταλλάξτε τη ρίζα στο τέλος, συρρικνώστε το heap, και ξανακάνετε heapify (sift down) — n φορές.
Παράδειγμα
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
