Ini adalah pos ulang pertanyaan di cs.SE oleh Janoma . Kredit penuh dan rampasan untuknya atau cs.SE.
Dalam kursus algoritma standar kita diajarkan bahwa quicksort rata-rata adalah O (n log n) dan O (n²) dalam kasus terburuk. Pada saat yang sama, algoritma pengurutan lainnya dipelajari yaitu O (n log n) dalam kasus terburuk (seperti mergesort dan heapsort ), dan bahkan waktu linear dalam kasus terbaik (seperti bubblesort ) tetapi dengan beberapa kebutuhan memori tambahan.
Setelah sekilas melihat beberapa waktu berlari , wajar untuk mengatakan bahwa quicksort tidak seefisien yang lainnya.
Juga, pertimbangkan bahwa siswa belajar dalam kursus pemrograman dasar bahwa rekursi tidak benar-benar baik secara umum karena dapat menggunakan terlalu banyak memori, dll. Oleh karena itu (dan meskipun ini bukan argumen nyata), ini memberikan gagasan bahwa quicksort mungkin tidak sangat bagus karena merupakan algoritma rekursif.
Mengapa, kemudian, apakah quicksort mengungguli algoritma pengurutan lainnya dalam praktek? Apakah itu ada hubungannya dengan struktur data dunia nyata ? Apakah itu ada hubungannya dengan cara memori bekerja di komputer? Saya tahu bahwa beberapa ingatan jauh lebih cepat daripada yang lain, tetapi saya tidak tahu apakah itu alasan sebenarnya untuk kinerja kontra-intuitif ini (bila dibandingkan dengan perkiraan teoritis).