Javascript Pancake 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 Pancake sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Pancake sort, bir dizi elemanı sıralamak için kullanılan bir algoritmadır. Bu algoritma, elemanların sıralanmış hale getirilmesine yardımcı olan dönüş işlemleriyle çalışır. Pancake sort, adını pankeklerin çevrilmesi işleminden almıştır.
Pancake Sort Algoritması İşlem Adımları
Pancake sort algoritması, bir dizi elemanı sıralamak için şu adımları izler:
- Dizinin en büyük elemanının bulunması ve dizinin başına getirilmesi.
- Dizinin tüm elemanlarının sıralanmış olup olmadığının kontrol edilmesi.
- Eğer tüm elemanlar sıralanmışsa, işlem tamamlanır.
- Eğer tüm elemanlar sıralanmamışsa, dizinin son elemanı hariç tüm elemanlar döndürülür.
- Dizinin son elemanı başa getirilir.
- Dizinin son elemanı hariç tüm elemanlar yeniden döndürülür.
- Dizinin son iki elemanı hariç tüm elemanlar yeniden döndürülür.
- Bu adımlar, dizinin tüm elemanları sıralanana kadar tekrar edilir.
Pancake sort algoritması, dizinin en büyük elemanını bulmak için lineer bir arama kullanır. Dizinin tüm elemanları sıralanmış olup olmadığının kontrol edilmesi için de lineer bir arama kullanılır. Döndürme işlemleri için ise bir döngü kullanılır.
Javascript Pancake Sort Algoritması Kodu
JavaScript ile Pancake sort algoritmasını uygulamak için aşağıdaki gibi bir kod örneği kullanabilirsiniz:
function pancakeSort(arr) {
let sorted = false;
let end = arr.length - 1;
while (!sorted) {
sorted = true;
// En büyük elemanı bul ve başa getir
let maxIndex = 0;
for (let i = 1; i <= end; i++) {
if (arr[i] > arr[maxIndex]) {
maxIndex = i;
}
}
if (maxIndex !== end) {
flip(arr, maxIndex); // Döndürme işlemi
flip(arr, end); // Döndürme işlemi
sorted = false;
}
end--;
// Tüm elemanlar sıralanmış mı?
for (let i = 0; i < end; i++) {
if (arr[i] > arr[i+1]) {
sorted = false;
break;
}
}
}
return arr;
}
function flip(arr, k) {
let i = 0;
while (i < k) {
let temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
i++;
k--;
}
}
Yukarıdaki kod örneği, pancakeSort() fonksiyonunu kullanarak bir dizi elemanını sıralar. flip() fonksiyonu, dizi elemanlarını döndürmek için kullanılır.
Örneğin, aşağıdaki gibi bir dizi elemanı verildiğinde:
let arr = [3, 1, 7, 4, 2, 6, 5];
let sortedArr = pancakeSort(arr);
console.log(sortedArr); // => [1, 2, 3, 4, 5, 6, 7]
Yukarıdaki kod örneği, pancake sort algoritmasının JavaScript ile nasıl uygulanacağına dair bir örnek sunmaktadır.
Pancake Sort Algoritması Karmaşıklığı
Pancake sort, kararlı ve O(n2) zaman karmaşıklığına sahip bir sıralama algoritmasıdır. Bu nedenle, küçük boyutlu diziler için kullanılabilir ancak büyük boyutlu diziler için verimli bir seçenek değildir.
Evet Javascript ile Pancake Sort Algoritması bu şekilde olmakta. 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.