Javascript Shaker 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 shaker sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Shaker Sort Algoritması Nedir?
Shaker sort, bubble sort gibi bir karşılaştırmalı sıralama algoritmasıdır ve bir dizi elemanı sıralamak için kullanılır. Bubble sort’tan farklı olarak, shaker sort algoritması aynı zamanda cocktail sort veya bidirectional bubble sort olarak da adlandırılır.
Shaker Sort Algoritması İşlem Adımları
Shaker sort, elemanları soldan sağa veya sağdan sola doğru tarayarak sıralama işlemini gerçekleştirir. Her iterasyon, şu şekilde gerçekleştirilir:
- Dizi soldan sağa doğru taranır ve ardışık elemanlar karşılaştırılır. Eğer bir önceki eleman bir sonrakinden daha büyükse, bu iki eleman yer değiştirir.
- Dizi sağdan sola doğru taranır ve ardışık elemanlar karşılaştırılır. Eğer bir önceki eleman bir sonrakinden daha büyükse, bu iki eleman yer değiştirir.
- İlk iki adım tamamlandıktan sonra, dizi son elemandan başlayarak tekrar sol tarafa doğru taranır. Yine ardışık elemanlar karşılaştırılır ve gerektiği durumlarda yer değiştirilir.
- Dizi sağdan sola doğru taranır ve ardışık elemanlar karşılaştırılır. Gerektiği durumlarda yer değiştirilir.
- Adımlar tekrarlanır ve son elemanla başlangıç elemanı arasındaki sıralama tamamlanana kadar devam eder.
Shaker sort algoritması, bubble sort algoritmasına benzer şekilde, en kötü durumda O(n2) zaman karmaşıklığına sahip olabilir. Ancak, birkaç iyileştirme ile bu zaman karmaşıklığını en aza indirebiliriz.
Javascript Shaker Sort Algoritması Kodu
Shaker sort algoritmasını JavaScript dilinde aşağıdaki gibi yazabiliriz:
function shakerSort(arr) {
let start = 0;
let end = arr.length - 1;
while (start <= end) {
for (let i = start; i < end; i++) {
if (arr[i] > arr[i + 1]) {
swap(arr, i, i + 1);
}
}
end--;
for (let i = end; i > start; i--) {
if (arr[i] < arr[i - 1]) {
swap(arr, i, i - 1);
}
}
start++;
}
return arr;
}
function swap(arr, i, j) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
Yukarıdaki kod, bir dizi elemanını shaker sort algoritması kullanarak sıralar. İlk olarak, iki değişken olan start ve end, dizi elemanlarının sıralanacağı bölgeyi işaretler. while döngüsü, sıralama işlemi tamamlanana kadar devam eder.
Kod Açıklamaları
İlk for döngüsü, soldan sağa doğru tarar ve ardışık elemanları karşılaştırır. Eğer bir önceki eleman bir sonrakinden daha büyükse, bu iki eleman yer değiştirir. end değişkeni bir azaltılarak son elemanın zaten sıralandığı gösterilir. İkinci for döngüsü, sağdan sola doğru tarar ve ardışık elemanları karşılaştırır. Eğer bir önceki eleman bir sonrakinden daha büyükse, bu iki eleman yer değiştirir. start değişkeni bir artırılarak başlangıç elemanının zaten sıralandığı gösterilir.
Bu işlemler, dizi tamamen sıralanana kadar devam eder ve sıralanmış dizi geri döndürülür.
Shaker sort algoritması, performans açısından bubble sort’a benzerdir. Ancak, özellikle büyük veri kümelerinde, birkaç küçük iyileştirme ile daha iyi sonuçlar verebilir.
Evet Javascript ile shaker sort algoritması bu şekilde yazılmakta. Tüm Javascript yazılarımıza buraya, sıralama algoritmaları ile ilgili yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.