Merge Sort, "Böl ve Fethet" (Divide and Conquer) paradigmasına dayanan popüler ve verimli bir karşılaştırma tabanlı sıralama algoritmasıdır. 1945 yılında John von Neumann tarafından geliştirilmiştir. ## Çalışma Prensibi: 1. **Bölme (Divide)**: Dizi, her biri orijinal dizinin yaklaşık yarısı büyüklüğünde iki alt diziye bölünür. 2. **Fethetme (Conquer)**: İki alt dizi özyinelemeli (recursive) olarak Merge Sort ile sıralanır. 3. **Birleştirme (Combine/Merge)**: İki sıralı alt dizi, tek bir sıralı dizi oluşturacak şekilde birleştirilir. ## Önemli Özellikler: 1. **Kararlı (Stable)**: Eşit değere sahip elemanların orijinal dizideki göreceli sırası korunur. 2. **Garantili Zaman Karmaşıklığı**: En iyi, ortalama ve en kötü durumlarda her zaman O(n log n) süreyle çalışır. 3. **Harici Sıralama için Uygun**: Verilerin tamamının belleğe sığmadığı durumlarda (External Sorting) son derece etkilidir. 4. **Ek Bellek Gereksinimi**: O(n) ek alan karmaşıklığına sahiptir.
1function mergeSort(arr) {2 if (arr.length <= 1) return arr;3 4 const mid = Math.floor(arr.length / 2);5 const left = arr.slice(0, mid);6 const right = arr.slice(mid);7 8 const sortedLeft = mergeSort(left);9 const sortedRight = mergeSort(right);10 11 return merge(sortedLeft, sortedRight);12}1314function merge(left, right) {15 let result = [];16 let leftIndex = 0;17 let rightIndex = 0;18 19 while (leftIndex < left.length && rightIndex < right.length) {20 if (left[leftIndex] < right[rightIndex]) {21 result.push(left[leftIndex]);22 leftIndex++;23 } else {24 result.push(right[rightIndex]);25 rightIndex++;26 }27 }28 29 return result.concat(left.slice(leftIndex)).concat(right.slice(rightIndex));30}Verdiğiniz dizi Merge Sort algoritması ile sıralanacaktır.
En İyi: O(n log n) | Ortalama: O(n log n) | En Kötü: O(n log n)
O(n) - Birleştirme işlemi için yardımcı dizi gerekir.
Merge Sort, kararlılığın önemli olduğu ve her durumda tutarlı O(n log n) performans gerektiren uygulamalar için idealdir.