Ana belleğe (RAM) sığmayacak büyüklükteki verilerin disk blokları ve önbellek yığınları kullanılarak sıralanmasını sağlayan yöntemlerdir.
Harici Sıralama (External Sorting), bilgisayarın birincil belleğinde saklanamayacak kadar büyük olan verilerin sıralanması problemidir. Bu durumlarda veriler yavaş ikincil depolama birimlerinde (disklerde) saklanır ve sıralama işlemi özel stratejiler gerektirir.
Sıralama-Birleştirme (Sort-Merge) yaklaşımı iki aşamadan oluşur: İlk aşamada, belleğe sığacak büyüklükte veri parçaları (run) okunur, bellek içi bir algoritma ile sıralanır ve diske geçici dosya olarak yazılır. İkinci aşamada ise bu sıralı alt dosyalar birleştirilir.
Dengeli Çok Yollu Birleştirme (Balanced Multiway Merging), aynı anda birçok sıralı dosyayı tek bir sıralı dosya halinde birleştirerek disk erişimini minimumda tutar. Yedekli Seçim (Replacement Selection) ise bir min-heap öncelik kuyruğu kullanarak bellek boyutundan daha büyük (ortalama olarak bellek boyutunun iki katı) ilk sıralı parçalar üretmeyi sağlar, böylece birleştirme aşamasındaki geçiş sayısını azaltır.
Aşağıdaki uygulamalar PDF kaynaklarındaki pseudo kod akışını modern veri yapılarıyla ifade eder. Kenar durumları görünür bırakıldığı için örnekler doğrudan test edilebilir.
1class ReplacementSelectionSimulator {2 static generateRuns(input: number[], memSize: number): number[][] {3 const runs: number[][] = [];4 let currentRun: number[] = [];5 const heap: number[] = [];6 const deadSpace: number[] = [];78 let inputIdx = 0;9 // Belleği doldur10 while (inputIdx < input.length && heap.length < memSize) {11 heap.push(input[inputIdx++]);12 }13 heap.sort((a, b) => a - b); // Min heap simülasyonu1415 while (heap.length > 0 || deadSpace.length > 0) {16 if (heap.length === 0) {17 // Yeni bir run başlat18 runs.push(currentRun);19 currentRun = [];20 heap.push(...deadSpace);21 deadSpace.length = 0;22 heap.sort((a, b) => a - b);23 }2425 const val = heap.shift()!;26 currentRun.push(val);2728 if (inputIdx < input.length) {29 const nextVal = input[inputIdx++];30 if (nextVal >= val) {31 heap.push(nextVal);32 heap.sort((a, b) => a - b);33 } else {34 deadSpace.push(nextVal);35 }36 }37 }38 if (currentRun.length > 0) {39 runs.push(currentRun);40 }41 return runs;42 }43}Sıralanacak veri kümesini ve simüle edilecek bellek boyutunu noktalı virgülle ayırın. Örnek: 29,14,35,15,88,11,9,40,7; 3
Sıralanacak veri kümesini ve simüle edilecek bellek boyutunu noktalı virgülle ayırın. Örnek: 29,14,35,15,88,11,9,40,7; 3
En İyi Durum: O(n log n)
Ortalama Durum: O(n log n)
En Kötü Durum: O(n log n)
O(m) - Bu algoritmanın karmaşıklığı belirtilmemiş.
Harici Sıralama ve Birleştirme (External Sorting & Merging) Algoritması ile benzer veya alternatif olarak değerlendirilebilecek diğer başlıklar: