ก่อนอื่นคำจำกัดความเนื่องจากมันค่อนข้างสำคัญ: การเรียงที่เสถียรนั้นเป็นสิ่งที่รับประกันได้ว่าจะไม่เรียงลำดับองค์ประกอบด้วยปุ่มเหมือนกัน
คำแนะนำ:
การจัดเรียงอย่างรวดเร็ว: เมื่อคุณไม่ต้องการการเรียงลำดับที่เสถียรและประสิทธิภาพตัวพิมพ์เล็กโดยทั่วไปนั้นสำคัญกว่าประสิทธิภาพของตัวพิมพ์เล็กที่สุด การเรียงลำดับแบบด่วนคือ O (N log N) โดยเฉลี่ย O (N ^ 2) ในกรณีที่เลวร้ายที่สุด การใช้งานที่ดีใช้หน่วยเก็บข้อมูลสำรอง O (log N) ในรูปแบบของพื้นที่สแต็กสำหรับการเรียกซ้ำ
ผสานการเรียงลำดับ: เมื่อคุณต้องการความเสถียรการเรียงลำดับ O (N log N) นี่เป็นเพียงตัวเลือกเดียวของคุณ ข้อเสียเพียงอย่างเดียวคือมันใช้พื้นที่เสริม O (N) และมีค่าคงที่ที่ใหญ่กว่าการจัดเรียงอย่างรวดเร็วเล็กน้อย มีบางอย่างในสถานที่ผสาน แต่ AFAIK ทั้งหมดไม่เสถียรหรือแย่กว่า O (N log N) แม้แต่ O (N log N) ในสถานที่ต่าง ๆ ก็มีค่าคงที่มากกว่าการรวมแบบเก่าแบบธรรมดามากจนพวกมันน่าสนใจทางทฤษฎีมากกว่าอัลกอริธึมที่มีประโยชน์
การเรียงลำดับฮีป: เมื่อคุณไม่ต้องการการจัดเรียงที่เสถียรและคุณให้ความสำคัญกับประสิทธิภาพของเคสที่แย่ที่สุดกว่าประสิทธิภาพเคสโดยเฉลี่ย มันรับประกันว่าจะเป็น O (N log N) และใช้พื้นที่เสริม O (1) ซึ่งหมายความว่าคุณจะไม่ใช้พื้นที่ฮีปหรือสแต็กโดยไม่คาดคิดในอินพุตที่มีขนาดใหญ่มาก
Introsort: นี่คือการเรียงลำดับอย่างรวดเร็วที่สลับไปยังการเรียงลำดับฮีปหลังจากความลึกการวนซ้ำที่แน่นอนเพื่อหลีกเลี่ยงกรณีที่เลวร้ายที่สุดของ O (N ^ 2) มันเกือบจะดีกว่าการจัดเรียงแบบเร็วแบบเก่า ๆ เกือบทุกครั้งเนื่องจากคุณได้รับตัวพิมพ์เร็วโดยเฉลี่ยด้วยประสิทธิภาพ O (N log N) อาจเป็นเหตุผลเดียวที่จะใช้การเรียงลำดับฮีพแทนสิ่งนี้คือในระบบที่ จำกัด หน่วยความจำอย่างรุนแรงซึ่งพื้นที่สแต็ก O (log N) มีความสำคัญในทางปฏิบัติ
การเรียงลำดับการแทรก : เมื่อรับประกันว่า N จะมีขนาดเล็กรวมถึงเป็นกรณีพื้นฐานของการจัดเรียงอย่างรวดเร็วหรือการจัดเรียงผสาน แม้ว่านี่จะเป็น O (N ^ 2) แต่ก็มีค่าคงที่ที่เล็กมากและมีความเสถียร
การเรียงลำดับฟองการเรียงลำดับการเลือก : เมื่อคุณทำสิ่งที่รวดเร็วและสกปรกและด้วยเหตุผลบางอย่างคุณไม่สามารถใช้อัลกอริทึมการเรียงลำดับของไลบรารีมาตรฐานได้ ข้อได้เปรียบเพียงอย่างเดียวที่มีมากกว่าการเรียงลำดับการแทรกนั้นง่ายกว่าเล็กน้อยที่จะนำไปใช้
การเรียงลำดับที่ไม่ใช่การเปรียบเทียบ: ภายใต้เงื่อนไขที่ จำกัด บางอย่างเป็นไปได้ที่จะทำลายสิ่งกีดขวาง O (N log N) และเรียงลำดับใน O (N) ต่อไปนี้เป็นกรณีที่ควรลอง:
การเรียงลำดับการนับ: เมื่อคุณเรียงลำดับเลขจำนวนเต็มด้วยช่วง จำกัด
การจัดเรียง Radix: เมื่อ log (N) มีขนาดใหญ่กว่า K อย่างมีนัยสำคัญที่ K คือจำนวนของตัวเลขฐานราก
ถังเรียง: เมื่อคุณสามารถรับประกันได้ว่าการป้อนข้อมูลของคุณมีการกระจายอย่างสม่ำเสมอ