Javascript Unshuffle 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 Unshuffle Sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Unshuffle Sort Algoritması
Unshuffle Sort algoritması, sıralama algoritmaları arasında yer alan bir algoritmadır. Bu algoritma, öncelikle bir dizi içerisindeki elemanları rastgele bir şekilde karıştırır. Daha sonra ise, bu elemanları orijinal sıralamalarına göre yeniden sıralayarak ilk haline geri döndürmeyi hedefler.
Bu algoritmanın temel fikri, bir dizinin sıralı olması durumunda elemanlarının sıralı hallerinin daha kolay bulunabileceği düşüncesine dayanır. Bu nedenle, öncelikle elemanların sıralamasını kaybettiren bir karıştırma işlemi yapılır. Daha sonra ise, bu karıştırılmış dizinin orijinal sıralamasına döndürülmesi için bir sıralama işlemi yapılır.
Javascript Kodu
Unshuffle Sort algoritmasını uygulamak için öncelikle bir dizi içerisindeki elemanları rastgele bir şekilde karıştırmamız gerekmektedir. Bunun için, Fisher-Yates Shuffle algoritmasını kullanabiliriz. Daha sonra ise, bu karıştırılmış diziyi orijinal sıralamasına döndürmek için bir sıralama işlemi yapacağız.
Aşağıda, JavaScript kod örnekleri ile Unshuffle Sort algoritmasının nasıl uygulandığını gösteriyoruz.
// Fisher-Yates Shuffle algoritması ile elemanları rastgele karıştırma
function shuffleArray(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
// Unshuffle Sort algoritması uygulama
function unshuffleSort(array) {
// Dizi elemanlarını karıştırma
const shuffledArray = shuffleArray([...array]);
// Karıştırılmış diziyi sıralama
const sortedArray = shuffledArray.sort((a, b) => a - b);
// Orijinal sıraya dönüştürme
const unshuffledArray = [];
for (let i = 0; i < array.length; i++) {
const index = sortedArray.indexOf(array[i]);
unshuffledArray.push(shuffledArray[index]);
}
return unshuffledArray;
}
Kod Açıklamaları
Yukarıdaki örnekte, Unshuffle Sort algoritması için öncelikle bir dizi içerisindeki elemanları rastgele bir şekilde karıştırmak için shuffleArray() adlı bir fonksiyon yazıyoruz. Bu fonksiyon, Fisher-Yates Shuffle algoritmasını kullanarak, dizi elemanlarını rastgele bir şekilde karıştırır ve karıştırılmış diziyi döndürür.
Daha sonra ise, unshuffleSort() adlı ana fonksiyonumuzu yazıyoruz. Bu fonksiyon, öncelikle dizi elemanlarını karıştırmak için shuffleArray() fonksiyonunu çağırır ve karıştırılmış diziyi shuffledArray değişkeninde saklar. Daha sonra, bu karıştırılmış diziyi sıralamak için JavaScript’in sort() metodunu kullanarak, sortedArray adlı bir değişkende saklarız.
Son olarak ise, orijinal sıralamasına döndürmek için, unshuffledArray adlı bir dizi oluştururuz ve bu diziyi öncelikle boş olarak tanımlarız. Daha sonra ise, önceden sıralanmış dizideki elemanların, karıştırılmış dizideki sıraları belirleyerek unshuffledArray dizisine ekleriz.
Yukarıdaki örnek kodu çalıştırdığımızda, örnek bir dizi içerisindeki elemanların önce rastgele bir şekilde karıştırıldığını, daha sonra bu karıştırılmış dizinin orijinal sıralamasına döndürüldüğünü gözlemleyebiliriz. Örneğin:
const array = [5, 2, 9, 1, 5, 6];
const unshuffledArray = unshuffleSort(array);
console.log(unshuffledArray); // [1, 2, 5, 5, 6, 9]
Yukarıdaki örnek kodu çalıştırdığımızda, ilk olarak array adlı bir dizi oluşturuyoruz. Daha sonra ise, unshuffleSort() fonksiyonunu kullanarak bu diziyi orijinal sıralamasına döndürüyoruz. Son olarak, unshuffledArray dizisini konsola yazdırarak orijinal sıralamasına döndürülmüş diziyi gözlemleyebiliriz.
Çalışma Mantığı
Unshuffle Sort algoritması, bir dizi içerisindeki elemanların sıralamasını kaybettirerek, sonrasında bu elemanları tekrar orijinal sıralamasına döndürmeyi hedefleyen bir algoritmadır. Bu makalede, Unshuffle Sort algoritmasının nasıl çalıştığına dair bilgi verdik ve JavaScript kod örnekleriyle algoritmayı uyguladık. Bu algoritmanın kullanımı, özellikle büyük boyutlu dizilerde sıralama yapmak yerine elemanları kaybettirip sonrasında orijinal sıralamalarına döndürmek isteyen durumlarda kullanılabilir. Unshuffle Sort algoritması, Fisher-Yates Shuffle algoritmasını kullanarak elemanları karıştırmakta ve sonrasında sort() metodunu kullanarak karıştırılmış diziyi sıralamaktadır. Daha sonra ise, orijinal sıralamasına döndürmek için elemanların sıralarını belirleyerek yeni bir dizi oluşturulmaktadır.
Unshuffle Sort algoritması, özellikle bazı problemlerde kullanılabilir. Örneğin, büyük boyutlu bir diziyi sıralamak oldukça zaman alabilir. Ancak, bu diziyi önce karıştırarak, daha sonra orijinal sıralamasına döndürmek, sıralama işleminin hızlanmasına yardımcı olabilir. Ayrıca, bazı uygulamalarda elemanların orijinal sıralamasının korunması önemlidir. Bu gibi durumlarda da Unshuffle Sort algoritması kullanılabilir.
Sonuç
Bu makalede, Unshuffle Sort algoritmasının nasıl çalıştığına ve JavaScript kod örnekleriyle nasıl uygulandığına dair bilgi verdik. Bu algoritmanın, özellikle büyük boyutlu dizilerin sıralanması gibi durumlarda kullanılabilir. Ancak, bu algoritmanın kullanımı, özellikle küçük boyutlu dizilerde, sıralama işleminin kendisi kadar verimli olmayabilir.
Evet Javascript ile Unshuffle 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.