Standart bir algoritma dersinde, hızlı bağlantı noktasının ortalama olarak ve en kötü durumda ise olduğu öğrenilir. Aynı zamanda, diğer sıralama algoritmaları incelenmiştir hangi olan (gibi en kötü durumda MergeSort ve HizliSiralama ve (gibi iyi durumda bile lineer zamanı) BubbleSort ) ancak belleğin bazı ek ihtiyaçları olan.O ( n 2 ) O ( n log n )
Bazı çalışma sürelerinde hızlıca bir bakıştan sonra , quicksort'un diğerleri kadar verimli olmaması gerektiğini söylemek doğaldır .
Ayrıca, öğrencilerin temel programlama derslerinde genel olarak derslerin özyinelemenin gerçekten iyi olmadığını, çünkü çok fazla bellek kullanabileceğini vb. Öğrendiklerini göz önünde bulundurun. gerçekten iyi çünkü özyinelemeli bir algoritma.
Öyleyse neden quicksort pratikte diğer sıralama algoritmalarından daha iyi performans gösteriyor? Gerçek dünya verilerinin yapısıyla mı ilgili? Bilgisayarlarda belleğin çalışma şekli ile mi ilgili olmalı? Bazı hatıraların diğerlerinden çok daha hızlı olduğunu biliyorum, ancak bu karşı-sezgisel performansın gerçek nedeni olup olmadığını bilmiyorum (teorik tahminlerle karşılaştırıldığında).
Güncelleme 1: kanonik bir cevap, ortalama davanın 'da yer alan sabitlerin diğer algoritmalarında yer alan sabitlerden daha küçük olduğunu söylüyor . Bununla birlikte, sadece sezgisel fikirler yerine kesin hesaplamalar yaparak, bunun doğru bir gerekçesini henüz görmedim.O ( n log n )
Her halükarda, bazı cevapların öne sürdüğü gibi, uygulamaların bilgisayarların iç yapısından yararlandığı bellek düzeyinde, örneğin önbellek RAM'in RAM'den daha hızlı olduğu gibi, gerçek fark oluşuyor gibi görünüyor. Tartışma çok ilginç, ama yine de cevabın bununla ilgisi olduğu anlaşıldığı için bellek yönetimi ile ilgili daha fazla ayrıntı görmek istiyorum .
2 güncelle: sıralama algoritmaları bir karşılaştırmasını sunan çeşitli web sayfaları vardır, (özellikle diğerlerinden daha meraklısı bazı sorting-algorithms.com ). Güzel bir görsel yardım sunmaktan başka, bu yaklaşım sorumu cevaplamıyor.