Javascript Fringe 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 fringe sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Fringe Sort Algoritması Nedir?
Fringe sort, bir dizi içindeki elemanların sıralanması için kullanılan bir algoritmadır. Bu algoritma, diğer sıralama algoritmaları gibi karşılaştırma işlemlerine dayanmaz. Bunun yerine, algoritma elemanları graf şeklinde düşünecek ve bu grafiğin dalları boyunca elemanları sıralayacaktır.
Fringe sort algoritması için, öncelikle her elemanın bir öncelik değeri olması gerekiyor. Bu öncelik değerleri, elemanların sıralanması için kullanılacak olan kılavuzdur. Öncelik değerleri, elemanlar arasındaki ilişkiyi belirlemek için kullanılır.
Javascript Fringe Sort Algoritması Kodu
Aşağıdaki örnek, fringe sort algoritmasının nasıl çalıştığını göstermektedir:
// Elemanların öncelik değeri hesaplanır
function calculatePriority(element) {
return element.priority;
}
// Kök eleman belirlenir
function findRoot(priorities) {
let maxPriority = -Infinity;
let root = null;
for (const priority of priorities) {
if (priority > maxPriority) {
maxPriority = priority;
root = priorities.indexOf(priority);
}
}
return root;
}
// Dalların çocukları belirlenir
function getChildren(node, priorities) {
const children = [];
for (let i = 0; i < priorities.length; i++) {
if (priorities[i] > priorities[node]) {
children.push(i);
}
}
return children;
}
// Dallar boyunca elemanlar sıralanır
function fringeSort(elements) {
const priorities = elements.map(calculatePriority);
const sortedArray = [];
const fringe = [findRoot(priorities)];
while (fringe.length > 0) {
const node = fringe.pop();
sortedArray.push(elements[node]);
const children = getChildren(node, priorities);
for (const child of children) {
fringe.push(child);
}
}
return sortedArray;
}
Bu örnek, fringe sort algoritmasını uygulamak için bir dizi adım içermektedir. İlk adımda, elemanların öncelik değerleri hesaplanır ve kök eleman belirlenir. Daha sonra, dalların sıralanması için gerekli yapılar oluşturulur ve elemanlar sıralanır. Son olarak, sıralı dizi oluşturulur ve geri döndürülür.
Bu örnekteki calculatePriority, findRoot, getChildren ve traverse fonksiyonlarının, algoritmanın işleyişine göre özelleştirilmesi gerekmektedir. Ancak, bu örnek algoritmanın temel işleyişini anlamak için yeterlidir.
Kod Açıklamaları
Şimdi, örnek kodun her bir fonksiyonunu ayrıntılı olarak inceleyelim:
calculatePriority
Bu fonksiyon, bir elemanın öncelik değerini hesaplar. Öncelik değerleri, elemanların sıralanması için kullanılacak olan kılavuzdur. Bu fonksiyon, elemanların öncelik değerlerini hesaplamak için özelleştirilmesi gereken bir fonksiyondur.
findRoot
Bu fonksiyon, kök elemanı belirler. Kök eleman, algoritmanın dalları boyunca elemanların sıralanmasına başlanacak olan elemandır. Bu fonksiyon, kök elemanın belirlenmesi için özelleştirilmesi gereken bir fonksiyondur.
getChildren
Bu fonksiyon, bir düğümün çocuklarını belirler. Çocuklar, bir elemanın dalları boyunca sıralanması için kullanılır. Bu fonksiyon, bir düğümün çocuklarını belirlemek için özelleştirilmesi gereken bir fonksiyondur.
traverse
Bu fonksiyon, dallar boyunca elemanları sıralar. Bu fonksiyon, elemanların sıralanması için kullanılan ana fonksiyondur.
Yukarıdaki fonksiyonların her biri, algoritmanın işleyişine göre özelleştirilmesi gerekmektedir. Örneğin, calculatePriority fonksiyonu, elemanların öncelik değerlerinin nasıl hesaplanacağını belirleyecektir. findRoot fonksiyonu, kök elemanın belirlenmesi için uygun bir yöntemi seçecektir. getChildren fonksiyonu, bir düğümün çocuklarının belirlenmesi için bir yöntem sağlayacaktır. Son olarak, traverse fonksiyonu, dallar boyunca elemanların sıralanması için gerekli adımları gerçekleştirecektir.
Kodun Test Edilmesi
// Test
const elements = [
{ value: 'D', priority: 4 },
{ value: 'C', priority: 3 },
{ value: 'A', priority: 1 },
{ value: 'B', priority: 2 },
{ value: 'E', priority: 5 },
];
console.log(fringeSort(elements)); // [{ value: 'E', priority: 5 }, { value: 'D', priority: 4 }, { value: 'C', priority: 3 }, { value: 'B', priority: 2 }, { value: 'A', priority: 1 }]
Sonuç
Fringe sort algoritması, elemanların öncelik değerlerine dayanarak sıralama yapar. Bu nedenle, algoritma genellikle diğer sıralama algoritmalarından daha hızlıdır. Ancak, bu algoritma, elemanların öncelik değerlerinin nasıl hesaplanacağına ve kök elemanın nasıl belirleneceğine bağlı olarak farklı sonuçlar verebilir.
Evet Javascript ile fringe sort algoritması bu şekilde idi. Tüm Javascript yazılarımıza buraya, diğer sıralama algoritmaları yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.