Javascript Shatter Sort Algoritması

Herkese merhaba, Javascript yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda sıralama algoritmalarından biri olan shatter sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Shatter Sort Algoritması
Shatter Sort, karşılaştırmalı bir sıralama algoritmasıdır. Bu algoritma, sıralanacak diziyi iki parçaya ayırır ve her parçayı ayrı ayrı sıralar. Ardından, sıralanmış iki parça birleştirilerek tamamen sıralanmış bir dizi elde edilir. Bu işlem, alt dizilerin boyutu 1’e eşit olduğunda tamamlanır.
Algoritma İşleyişi
Shatter Sort algoritması, aşağıdaki adımları izler:
- Sıralanacak dizinin uzunluğu hesaplanır.
- Dizinin ortası bulunur ve dizinin iki parçaya ayrılacak indeks değeri hesaplanır.
- İlk parça, başlangıçtan orta indekse kadar olan elemanları içerir.
- İkinci parça, orta indeksten dizinin sonuna kadar olan elemanları içerir.
- İlk parça ve ikinci parça, ayrı ayrı sıralanır.
- Sıralanmış iki parça birleştirilir.
Bu işlem, alt dizilerin boyutu 1’e eşit olduğunda tamamlanır. İşlem sırasında, her alt dizi kendi içinde sıralanarak, n log n zaman karmaşıklığına sahip bir sıralama algoritmasıdır.
Javascript Shatter Sort Algoritması Kodu
Aşağıda, JavaScript dilinde Shatter Sort algoritması için örnek kodlar verilmiştir.
function shatterSort(arr) {
if (arr.length <= 1) {
return arr;
}
const midIndex = Math.floor(arr.length / 2);
const leftArr = arr.slice(0, midIndex);
const rightArr = arr.slice(midIndex);
const sortedLeftArr = shatterSort(leftArr);
const sortedRightArr = shatterSort(rightArr);
return merge(sortedLeftArr, sortedRightArr);
}
function merge(leftArr, rightArr) {
const mergedArr = [];
let leftIndex = 0;
let rightIndex = 0;
while (leftIndex < leftArr.length && rightIndex < rightArr.length) {
if (leftArr[leftIndex] < rightArr[rightIndex]) {
mergedArr.push(leftArr[leftIndex]);
leftIndex++;
} else {
mergedArr.push(rightArr[rightIndex]);
rightIndex++;
}
}
return mergedArr.concat(leftArr.slice(leftIndex)).concat(rightArr.slice(rightIndex));
}
const unsortedArr = [5, 2, 1, 8, 4];
const sortedArr = shatterSort(unsortedArr);
console.log(sortedArr);
Bu örnekte, bir dizi içerisinde Shatter Sort algoritması kullanılarak sıralama işlemi gerçekleştirilmektedir. shatterSort() fonksiyonu, diziyi ikiye ayırarak alt dizileri sıralar ve merge() fonksiyonuyla birleştirir. merge() fonksiyonu, iki ayrı alt diziyi birleştirir ve sıralı bir dizi elde edilir.
Bu örnekte, shatterSort() fonksiyonuna sıralanacak diziyi parametre olarak vererek, sıralanmış bir dizi elde ediyoruz. Daha sonra, bu sıralanmış dizi konsola yazdırılır.
Algoritma Analizi
Shatter Sort algoritması, ayrı ayrı sıralama ve birleştirme işlemlerinden oluşur. Alt dizilerin boyutu 1’e eşit olduğunda, sıralama işlemi tamamlanır. Bu nedenle, Shatter Sort algoritmasının zaman karmaşıklığı, n log n’dir.
Ancak, bu algoritmanın en kötü durumda performansı n²’dir. Bu durum, alt dizilerin sıralanmasındaki orta elemanın seçimiyle ilgilidir. Ortalama eleman, zaman karmaşıklığını etkileyebilecek en kritik faktördür.
Sonuç
Bu makalede, Shatter Sort algoritmasının ne olduğu, nasıl çalıştığı ve örnek kodlar verilmiştir. Shatter Sort algoritması, n log n zaman karmaşıklığına sahip bir sıralama algoritmasıdır. Ayrı ayrı sıralama ve birleştirme işlemlerinden oluşur ve alt dizilerin boyutu 1’e eşit olduğunda tamamlanır. Ancak, algoritmanın en kötü durumda performansı O(n²)’dir. Bu nedenle, kullanmadan önce, iyi bir analiz yapılması gerekmektedir.
Evet shatter sort algoritması bu şekilde olmakta. Tüm Javascript yazılarımıza buraya, diğer sıralama algoritmaları ile ilgili yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.