DAA - Hızlı Sıralama
Böl ve yönet ilkesine göre kullanılır. Hızlı sıralama, uygulaması zor olmadığı için birçok durumda tercih edilen bir algoritmadır. İyi bir genel amaçlı türdür ve yürütme sırasında nispeten daha az kaynak tüketir.
Avantajlar
Yalnızca küçük bir yardımcı yığın kullandığı için yerinde.
Sadece gerektirir n (log n) sıralama zamanı n öğeler.
Son derece kısa bir iç döngüye sahiptir.
Bu algoritma kapsamlı bir matematiksel analize tabi tutulmuştur, performans sorunları hakkında çok kesin bir açıklama yapılabilir.
Dezavantajları
Özyinelemelidir. Özellikle özyineleme mevcut değilse, uygulama son derece karmaşıktır.
En kötü durumda ikinci dereceden (yani n2) zaman gerektirir.
Kırılgandır, yani uygulamadaki basit bir hata fark edilmeyebilir ve kötü performans göstermesine neden olabilir.
Hızlı sıralama, belirli bir diziyi bölümlere ayırarak çalışır A[p ... r] iki boş olmayan alt diziye A[p ... q] ve A[q+1 ... r] öyle ki her anahtar A[p ... q] her anahtardan küçüktür veya ona eşittir A[q+1 ... r].
Ardından, iki alt dizi, Hızlı sıralama için özyinelemeli çağrılara göre sıralanır. Bölümün tam konumu verilen diziye ve dizine bağlıdırq bölümleme prosedürünün bir parçası olarak hesaplanır.
Algorithm: Quick-Sort (A, p, r)
if p < r then
q Partition (A, p, r)
Quick-Sort (A, p, q)
Quick-Sort (A, q + r, r)
Tüm diziyi sıralamak için ilk çağrının Quick-Sort (A, 1, length[A])
İlk adım olarak, Hızlı Sıralama, pivot olarak sıralanacak dizideki öğelerden birini seçer. Ardından dizi, pivotun her iki tarafında bölümlenir. Pivot'tan küçük veya ona eşit olan öğeler sola doğru hareket ederken, pivot'tan büyük veya ona eşit olan öğeler sağa doğru hareket edecektir.
Diziyi Bölümleme
Bölümleme prosedürü, alt dizileri yerinde yeniden düzenler.
Function: Partition (A, p, r)
x ← A[p]
i ← p-1
j ← r+1
while TRUE do
Repeat j ← j - 1
until A[j] ≤ x
Repeat i← i+1
until A[i] ≥ x
if i < j then
exchange A[i] ↔ A[j]
else
return j
Analiz
Hızlı Sıralama algoritmasının en kötü durum karmaşıklığı O(n2). Bununla birlikte, bu tekniği kullanarak, ortalama durumlarda genellikle çıktıyıO(n log n) zaman.