ในการอ่านเกี่ยวกับอัลกอริทึมการเรียงลำดับต่าง ๆ ที่ฉันเคยเห็นมันบอกว่าบางตัวเป็น "เสถียร" และบางอันไม่ได้ หมายความว่าอย่างไรและการแลกเปลี่ยนใดที่เกี่ยวข้องกับพื้นฐานนั้นเมื่อเลือกอัลกอริทึม
ในการอ่านเกี่ยวกับอัลกอริทึมการเรียงลำดับต่าง ๆ ที่ฉันเคยเห็นมันบอกว่าบางตัวเป็น "เสถียร" และบางอันไม่ได้ หมายความว่าอย่างไรและการแลกเปลี่ยนใดที่เกี่ยวข้องกับพื้นฐานนั้นเมื่อเลือกอัลกอริทึม
คำตอบ:
การจัดเรียงที่เสถียรคือสิ่งที่รักษาลำดับดั้งเดิมของชุดอินพุตซึ่งอัลกอริธึมการเปรียบเทียบไม่แยกความแตกต่างระหว่างสองรายการขึ้นไป
พิจารณาอัลกอริทึมการเรียงลำดับที่เรียงลำดับไพ่ตามลำดับแต่ไม่ใช่ตามความเหมาะสม การเรียงลำดับที่เสถียรจะรับประกันได้ว่าลำดับเดิมของการ์ดที่มีอันดับเดียวกันจะถูกสงวนไว้ การเรียงลำดับที่ไม่เสถียรจะไม่
อัลกอริธึมที่เสถียรรักษาลำดับสัมพัทธ์ขององค์ประกอบ
ดังนั้นอัลกอริธึมการเรียงลำดับที่เสถียรจะรักษาลำดับสัมพัทธ์ของค่าที่เปรียบเทียบเท่ากัน
พิจารณาอัลกอริทึมการเรียงลำดับที่เราเรียงลำดับคอลเลกชันของคะแนน 2d ตามมิติ X ของพวกเขา
คอลเลกชันที่จะเรียง: {(6, 3), (5, 5), (6, 1), (1, 3)}
จัดเรียงเสถียร: {(1, 3), (5, 5), (6, 3), (6, 1)}
จัดเรียงปกติ: อย่างใดอย่าง{(1, 3), (5, 5), (6, 3), (6, 1)}
หนึ่งหรือ{(1, 3), (5, 5), (6, 1), (6, 3)}
สำหรับการแลกเปลี่ยน ... การเรียงลำดับที่เสถียรนั้นมีประสิทธิภาพน้อยกว่า แต่บางครั้งคุณก็ต้องการ
ตัวอย่างเช่นเมื่อผู้ใช้คลิกส่วนหัวคอลัมน์เพื่อเรียงลำดับค่าใน UI มีเหตุผลที่คาดว่าจะเรียงลำดับการเรียงลำดับก่อนหน้าของเขาที่จะใช้ในกรณีที่มีค่าเท่ากัน