ผลต่างระหว่างรุ่นของ "การเรียงลำดับแบบเลือก"

เนื้อหาที่ลบ เนื้อหาที่เพิ่ม
Phizaz (คุย | ส่วนร่วม)
Phizaz (คุย | ส่วนร่วม)
ไม่มีความย่อการแก้ไข
บรรทัด 12:
| optimal = No
}}
ในสาขา[[วิทยาการคอมพิวเตอร์]] '''การเรียงลำดับแบบเลือก''' ({{lang-en|selection sort}}) เป็น[[ขั้นตอนวิธีการเรียงลำดับ]]อย่างง่ายโดยใช้วิธีการเปรียบเทียบ ทำงานโดยการหาค่าเหมาะสมที่สุด (ค่ามากสุดหรือน้อยสุด) ที่อยู่ใน[[รายการ]]ส่วนที่ยังไม่เรียงและนำค่าเหมาะที่สุดนั้นมาต่อท้ายของส่วนที่เรียงแล้ว ก็จะทำให้ส่วนที่เรียงแล้วมีขนาดใหญ่ขึ้นทีละหนึ่งในแต่ละรอบการทำงาน ทำเช่นนี้จนไม่มีส่วนที่ยังไม่เรียงก็เสร็จ แต่ด้วยประสิทธิภาพเมื่อเกิดกรณีทั่วไปที่ O(n<sup>2</sup>) ทำให้ไม่เหมาะสมเหมาะที่จะใช้ในกรณีที่มีข้อมูลใน[[รายการ]]เป็นจำนวนมาก แต่ถ้าหากปรับปรุงการหาค่าน้อยเหมาะสมที่สุดในรายการด้วย[[แถวคอยลำดับความสำคัญ]]ที่[[การทำให้เกิดผล|ทำให้เกิดผล]]ด้วยโครงสร้างข้อมูลแบบ[[ฮีปทวิภาค]]จะเรียกว่า[[การเรียงลำดับแบบฮีป]] ซึ่งมีประสิทธิภาพดีกว่าที่ O(n log n)
 
==การวิเคราะห์==
==ขั้นตอนวิธี==
#หาตัวที่มีค่าน้อยที่สุดในลิสต์ส่วนที่ยังไม่เรียง
#สลับตัวนี้กับตัวแรกของข้อมูลที่ยังไม่เรียง จะทำให้ส่วนที่ยังไม่เรียงมีขนาดเล็กลงหนึ่ง
#หาตัวที่น้อยที่สุดอีกครั้ง ทำจนกว่าจะไม่มีส่วนที่ยังไม่เรียง
===ตัวอย่างทีละขั้นตอน===
การเรียงลำดับข้อมูลในรายการดังนี้ 64 25 12 22 11 ด้วยขั้นตอนวิธีแบบเลือก เริ่มต้นถือว่าทุกตัวในรายการยังไม่เรียง<br>
เส้น 28 ⟶ 25:
เรียงเสร็จเรียบร้อย<br>
 
==การนำมาใช้งาน==
===ตัวอย่าง[[รหัสเทียม]]===
<source lang = "pascal">
เส้น 42 ⟶ 40:
end
</source>
 
==อ้างอิง==
 
[[หมวดหมู่:ขั้นตอนวิธีการเรียงลำดับ]]