นี่คือ repost ของคำถามเกี่ยวกับ cs.SEโดยJanoma หน่วยกิตและเครดิตทั้งหมดของเขาหรือของซีเอส
ในหลักสูตรอัลกอริธึมมาตรฐานเราถูกสอนว่าquicksortคือ O (n log n) โดยเฉลี่ยและ O (n²) ในกรณีที่แย่ที่สุด ในเวลาเดียวกันอัลกอริธึมการเรียงลำดับอื่น ๆ กำลังศึกษาซึ่งเป็น O (n log n) ในกรณีที่เลวร้ายที่สุด (เช่นการผสานและheapsort ) และแม้แต่เวลาเชิงเส้นในกรณีที่ดีที่สุด (เช่นbubbleort ) แต่มีความต้องการหน่วยความจำเพิ่มเติม
หลังจากมองผ่าน ๆ ในเวลาที่วิ่งเร็วขึ้นมันเป็นเรื่องธรรมดาที่จะบอกว่า quicksort ไม่ควรมีประสิทธิภาพเหมือนกับคนอื่น ๆ
นอกจากนี้ให้พิจารณาว่านักเรียนเรียนรู้ในหลักสูตรการเขียนโปรแกรมขั้นพื้นฐานที่การเรียกซ้ำโดยทั่วไปไม่ดีนักเพราะอาจใช้หน่วยความจำมากเกินไป ฯลฯ ดังนั้น (และแม้ว่านี่จะไม่ใช่ข้อโต้แย้งจริง ๆ ) สิ่งนี้ทำให้เกิดความคิดว่า ดีจริงๆเพราะเป็นอัลกอริทึมแบบเรียกซ้ำ
เหตุใด quicksort จึงมีประสิทธิภาพสูงกว่าอัลกอริทึมการเรียงลำดับอื่น ๆ ในทางปฏิบัติ มันเกี่ยวข้องกับโครงสร้างของข้อมูลจริงหรือไม่? มันเกี่ยวข้องกับการทำงานของหน่วยความจำในคอมพิวเตอร์หรือไม่? ฉันรู้ว่าความทรงจำบางอย่างนั้นเร็วกว่าวิธีอื่น ๆ แต่ฉันไม่รู้ว่านั่นเป็นเหตุผลที่แท้จริงสำหรับประสิทธิภาพการตอบโต้ที่ใช้งานง่ายนี้หรือไม่ (เมื่อเปรียบเทียบกับการประเมินเชิงทฤษฎี)