Javascript Heap 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 heap sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Heap Sort Algoritması
JavaScript, verileri sıralamak için birçok algoritma sunar ve Heap Sort, bu algoritmalar arasında en etkili olanlarından biridir. Heap Sort, bir dizi elemanını sıralamak için kullanılan bir sıralama algoritmasıdır. Bu algoritma, bir dizi elemanını bir “heap” veri yapısına dönüştürerek çalışır.
Heap, bir tamamen dolu ağaç yapısıdır ve her bir düğümü, bir düğümün çocuklarından daha küçük veya daha büyük olacak şekilde sıralar. Bu, bir heap ağacındaki en üst düğümün (kök düğümü) her zaman en küçük veya en büyük eleman olacağı anlamına gelir. Bu özelliği sayesinde Heap Sort, en kötü durumda bile O(n*logn) performans sağlar.
Javascript Heap Sort Algoritması Kodu
JavaScript’te Heap Sort’u uygulamak oldukça kolaydır. Aşağıdaki kod bloğu, JavaScript’te Heap Sort’u uygulamanın basit bir örneğidir:
function heapSort(arr) {
let n = arr.length;
// Heapify the array
for (let i = Math.floor(n / 2) - 1; i >= 0; i--) {
heapify(arr, n, i);
}
// Extract elements from heap one by one
for (let i = n - 1; i > 0; i--) {
// Move current root to end
[arr[0], arr[i]] = [arr[i], arr[0]];
// Heapify the reduced heap
heapify(arr, i, 0);
}
return arr;
}
function heapify(arr, n, i) {
let largest = i;
let left = 2 * i + 1;
let right = 2 * i + 2;
if (left < n && arr[left] > arr[largest]) {
largest = left;
}
if (right < n && arr[right] > arr[largest]) {
largest = right;
}
if (largest != i) {
[arr[i], arr[largest]] = [arr[largest], arr[i]];
heapify(arr, n, largest);
}
}
const arr = [5, 3, 2, 4, 1];
console.log(heapSort(arr)); // [1, 2, 3, 4, 5]
Bu örnekte, heapSort fonksiyonu bir dizi alır ve diziyi Heap Sort algoritmasına göre sıralar. İlk olarak, heapify fonksiyonu kullanılarak dizi heap veri yapısına dönüştürülür. Daha sonra, dizinin son elemanından başlayarak, kök düğümünü sona taşır ve heap veri yapısını yeniden oluşturmak için heapify fonksiyonu tekrar kullanılır.
heapify fonksiyonu, bir diziyi heap veri yapısına dönüştürmek için kullanılır. Fonksiyon, bir düğümün iki çocuğu ile karşılaştırarak en büyük çocuğu belirler ve en büyük çocuğun kendisinden büyük olduğu durumlarda düğümün değeriyle en büyük çocuğun değerini değiştirir. Daha sonra, fonksiyon, değiştirilen çocuk düğümünün alt ağacına aynı işlemi uygular.
Heap Sort Algoritması Özellikleri
Heap Sort algoritması, sıralama işlemi sırasında yeni bir dizi oluşturmadan doğrudan mevcut dizi üzerinde çalışır. Bu nedenle, yer kaplama açısından çok verimlidir ve büyük miktarda veriyi hızlı bir şekilde sıralamak için idealdir.
Ancak, Heap Sort’un en kötü durum karmaşıklığı O(n log n) olduğundan, hızlı olmasına rağmen bazı durumlarda diğer sıralama algoritmalarından daha yavaş olabilir. Özellikle, sıralanacak dizi çok küçükse, Heap Sort’un kullanılması maliyetli olabilir.
Sonuç
Sonuç olarak, JavaScript’te Heap Sort algoritması kullanarak bir dizi elemanını sıralamak oldukça basittir ve verimli bir yöntemdir. Ancak, uygulama bağlamında dikkate alınması gereken faktörler olabilir, özellikle de verinin boyutu ve özellikleri göz önüne alındığında.
Evet Javascript ile heap sort algoritmasının kullanımı bu şekilde yapılmakta. Tüm Javascript yazılarımıza buraya, sıralama algoritmalarıyla ilgili yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.