Heap Sort

Heap sort เป็นวิธีการเรียงลำดับที่มีหลักการทำงานคล้าย bubble sort และ selection sort (เขียนโปรแกรมยากกว่า แต่มีประสิทธิภาพดีกว่ามาก) คือการผลักให้ข้อมูลตัวมากสุดไปอยู่หลังสุดในกลุ่ม แต่มีวิธีการหาตัวมากสุด และการนำไปอยู่ตำแหน่งหลังสุดต่างกัน สำหรับ heap sort ใช้วิธีเก็บข้อมูลในอาเรย์แบบ binary heap ซึ่งใช้เวลาคงตัวในการหาตัวมากสุด และใช้เวลา O(log n) ในการลบตัวมากสุดเพื่อสลับกับตัวหลังสุดในกลุ่ม

การทดลองข้างล่างนี้ป้อนข้อมูลเริ่มต้นให้กับ selection sort สามแบบ คือ ข้อมูลเรียงเรียบร้อยแล้ว ข้อมูลเรียงกลับลำดับ และ ข้อมูลสุ่ม พบว่า ใช้เวลาการทำงานที่เร็วกว่าแบบ bubble sort และ selection sort มาก ๆ ให้สังเกตว่า การเรียงลำดับข้อมูลที่เรียงลำดับแล้วกลับช้ากว่ากรณีที่ข้อมูลเรียงกลับลำดับ เหมือนกับ selection sort ถ้ายังจำ binary heap ได้ ลองหาเหตุผลดูเองว่า ทำไมจึงเป็นเช่นนั้น ?

(อย่าลืมอ่านข้อแนะนำในการตีความผลการทดลอง)


สมชาย ประสิทธิ์จูตระกูล