Heap sort สร้าง binary heap จากอาร์เรย์ จากนั้นดึงค่าสูงสุดออกมาซ้ำๆ เพื่อสร้างลำดับที่เรียงลำดับ ทำงานใน O(n log n) และ ในที่
แนวคิด
Max-heap รักษาองค์ประกอบที่ใหญ่ที่สุดไว้ที่ราก สร้าง heap (O(n)) จากนั้นสลับรากไปยังส่วนท้าย ย่อขนาด heap และ re-heapify (sift down) — n ครั้ง
ตัวอย่าง
heapq
():
heapq.heapify(arr)
[heapq.heappop(arr)
_ ((arr))]
heap_sort([, , , , ])
