# Birleştirmeli Sıralama vs Hızlı Sıralama

Adres: https://softwaredictionary.org/tr/karsilastirma/merge-sort-vs-quicksort
Son güncelleme: 2026-09-30

Kısaca: Merge sort O(n log n) zamanı garanti eder ama ek bellek ister; quicksort ise pivot etrafında yerinde bölümler, genelde daha hızlıdır ama O(n²)'ye düşebilir.

## Birleştirmeli sıralama (merge sort) ile hızlı sıralama (quicksort) arasındaki fark nedir?

Merge sort ve quicksort, ikisi de böl ve yönet (divide-and-conquer) türünde sıralama algoritmalarıdır: problemi daha küçük parçalara böler, onları çözer ve sonuçları birleştirirler. Merge sort listeyi iki yarıya böler, her birini özyinelemeli olarak sıralar ve sıralanmış iki yarıyı birleştirir. Quicksort bir pivot eleman seçer, listeyi küçük elemanlar sola, büyükler sağa gidecek biçimde bölümler ve sonra her tarafı sıralar.

Zor işi farklı yerlere koyarlar. Merge sort'un bölme adımı basittir, işi birleştirme adımı yapar; bu her zaman O(n log n) zaman alır ama dizilerde O(n) ek bellek gerektirir. Quicksort'un bölümleme adımı işi yerinde yapar, az ek bellek kullanır ve ortalamada çok hızlı çalışır; ama pivotlar sürekli kötüyse, örneğin hep en küçük eleman seçiliyorsa, O(n²)'ye yavaşlar.

Gerçek dünyadaki sıralama fonksiyonları çoğu zaman bunları başka algoritmalarla birleştirir. Introsort quicksort ile başlar ve özyineleme fazla derinleşirse heapsort'a geçer; Python'da ve Java'da nesneler için kullanılan Timsort tarzı algoritmalar ise merge sort ile ekleme sıralamasına dayanır.

Sık yapılan bir yanlış, quicksort'un her zaman en iyi seçim olduğu düşüncesidir. Bellekteki diziler için ortalamada hızlıdır; ama merge sort kararlıdır (eşit elemanlar özgün sıralarını korur), en kötü durumu garantilidir ve bağlı listelere ve belleğe sığmayacak kadar büyük verilere uygundur.

| Özellik | Merge Sort | Quicksort |
| --- | --- | --- |
| Strateji | İkiye böl, her yarıyı sırala, sonra birleştir | Pivot etrafında bölümle, sonra her tarafı sırala |
| Ortalama süre | O(n log n) | O(n log n), pratikte genellikle daha hızlı |
| En kötü durum süresi | O(n log n), garantili | Sürekli kötü pivotlarla O(n²) |
| Ek bellek | Dizileri birleştirmek için O(n) | Özyineleme için O(log n); yerinde sıralar |
| Kararlılık | Kararlı: eşit elemanlar sırasını korur | Tipik gerçeklemelerde kararlı değil |
| İyi çalıştığı yer | Bağlı listeler ve belleğe sığmayan veriler | Bellekteki diziler; iyi önbellek kullanımı sayesinde |

## Merge Sort şu durumlarda doğru seçim

- Eşit elemanları sırasında tutan kararlı bir sıralamaya ihtiyacınız var.
- Garantili en kötü durum, ortalama hızdan daha önemli.
- Bir bağlı listeyi ya da diskte duran veriyi sıralıyorsunuz.

## Quicksort şu durumlarda doğru seçim

- Bellekteki dizileri sıralıyor ve en iyi ortalama hızı istiyorsunuz.
- Ek bellek sınırlı.
- Verileriniz için kararlılık önemli değil.

## Sık sorulan sorular

**Merge sort mu quicksort mu daha hızlı?**

Quicksort, yerinde çalıştığı ve CPU önbelleğini iyi kullandığı için bellekteki dizilerde genellikle daha hızlıdır. Garantili O(n log n) en kötü duruma ihtiyacınız olduğunda ya da bağlı listeleri veya çok büyük verileri sıraladığınızda merge sort kazanır.

**Quicksort kararlı mı?**

Olağan yerinde biçiminde değil, bu yüzden eşit elemanların sırası değişebilir. Merge sort kararlıdır; kayıtları önce bir alana, sonra başka bir alana göre sıraladığınızda bu önemlidir.

**Quicksort'un neden O(n²) en kötü durumu var?**

Pivot hep en küçük ya da en büyük eleman olursa, her bölümleme yalnızca bir eleman eler ve özyineleme n seviye derine iner. Rastgele ya da üçün ortancası (median-of-three) pivotlar seçmek bunu çok olasılık dışı kılar.

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
