ฮีปซอร์ต
ฮีปซอร์ต

ฮีปซอร์ต

ในทางวิทยาการคอมพิวเตอร์ ฮีปซอร์ต หรือ อัลกอริทึมจัดเรียงแบบฮีป (อังกฤษ: heapsort) คือ อัลกอริทึมจัดเรียงที่มีพื้นฐานคือการเปรียบเทียบสมาชิกในอาร์เรย์ (array) โดยใช้โครงสร้างข้อมูลแบบฮีป (heap) เป็นหลักในการจัดเรียง[1]ฮีปซอร์ตและโครงสร้างข้อมูลฮีป[2] คิดค้นขึ้นโดย เจ. ดับเบิลยู. เจ. วิลเลียมส์ ในปี ค.ศ. 1964[3]ฮีปซอร์ตจัดเป็นหนึ่งในกลุ่มซีเล็กชันซอร์ต (selection sort) กล่าวคือ อัลกอริทึมจะนำตัวที่มีค่าสูงที่สุดในอาร์เรย์ไปไว้ข้างหลังสุด และตัวที่สูงสุดอันดับที่สองตามมา จนถึงตัวสุดท้าย โดยใช้วิธีการสลับ (swaping) แต่ฮีปซอร์ตมีประสิทธิภาพสูงกว่าซีเล็กชันซอร์ตมากกว่าหลายเท่า[4]

ฮีปซอร์ต

ประสิทธิภาพเมื่อเกิดกรณีดีที่สุด O ( n log ⁡ n ) {\displaystyle O(n\log n)} (distinct keys)
or O ( n ) {\displaystyle O(n)} (equal keys)
ประเภท อัลกอริทึมจัดเรียง
ประสิทธิภาพเมื่อเกิดกรณีทั่วไป O ( n log ⁡ n ) {\displaystyle O(n\log n)}
โครงสร้างข้อมูล แถวลำดับ
ปริมาณความต้องการพื้นที่เมื่อเกิดกรณีแย่ที่สุด O ( n ) {\displaystyle O(n)} total O ( 1 ) {\displaystyle O(1)} auxiliary
ประสิทธิภาพเมื่อเกิดกรณีแย่ที่สุด O ( n log ⁡ n ) {\displaystyle O(n\log n)}