Javascript

Javascript Bucket Sort Algoritması

Herkese merhaba, Javascript yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda sıralama algoritmalarından olan bucket sort algoritmasını anlatacağım. Hadi başlayalım !

Bucket sort algoritması, sayıları sıralamak için bir dizi içinde küçük alt diziler veya kovalar kullanır. Her kova belirli bir aralıkta sayıları tutar. Algoritma şu adımları izler:

  • İlk olarak, sıralanacak olan sayıları diziye yerleştiririz.
  • Dizideki en büyük sayıyı buluruz ve buna göre kova sayısını belirleriz. Bu sayede kovaların aralıkları belirlenir.
  • Her bir sayıyı uygun kovaya yerleştiririz. – Her kova içindeki sayıları ayrı ayrı sıralarız.
  • Son olarak, kovalardaki sayıları birleştiririz.

Bu adımları ayrıntılı olarak inceleyelim.

Diziye Sayıları Yerleştirme

İlk adımda, sıralanacak olan sayıları bir diziye yerleştiririz. Örneğin, aşağıdaki dizideki sayıları sıralayacağız:

let arr = [29, 25, 3, 49, 9, 37, 21, 43];

Kova Sayısını Belirleme

İkinci adımda, dizideki en büyük sayıyı buluruz ve buna göre kova sayısını belirleriz. Bu sayede kovaların aralıkları belirlenir. Örneğin, yukarıdaki dizideki en büyük sayı 49’dur. Eğer 5 kova kullanmak isterseniz, kova aralığı 10 olacaktır. Yani, ilk kova 0-9, ikinci kova 10-19, üçüncü kova 20-29, dördüncü kova 30-39 ve son kova 40-49 aralıklarını içerecektir.

let max = Math.max(...arr);
let bucketCount = 5;
let bucketSize = Math.ceil(max / bucketCount);
let buckets = Array.from({ length: bucketCount }, () => []);

Yukarıdaki kod, dizideki en büyük sayıyı bulur, kova sayısını ve boyutunu belirler ve kovaları oluşturur.

Her Bir Sayıyı Uygun Kovaya Yerleştirme

Üçüncü adımda, her bir sayıyı uygun kovaya yerleştiririz. Bu, sayının kova aralığına göre hangi kovaya yerleştirileceğini belirleyerek yapılır. Örneğin, 29 sayısı 20-29 aralığında olduğu için 3. kovaya yerleştirilecektir.

for (let i = 0; i < arr.length; i++) {
    let bucketIndex = Math.floor(arr[i] / bucketSize);
    buckets[bucketIndex].push(arr[i]);
}

Yukarıdaki kod, dizideki her sayıyı uygun kovaya yerleştirir.

Her Bir Kova İçerisindeki Sayıları Ayrı Ayrı Sıralama

Dördüncü adımda, her kova içindeki sayıları ayrı ayrı sıralarız. Bu, her kova için bir sıralama algoritması kullanarak yapılır. Örneğin, aşağıdaki kod, her kova içindeki sayıları bubble sort algoritması kullanarak sıralar:

for (let i = 0; i < buckets.length; i++) {
  bubbleSort(buckets[i]);
}

function bubbleSort(arr) {
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr.length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

Yukarıdaki kod, her kova içindeki sayıları bubble sort algoritması kullanarak sıralar.

Kovalardaki Sayıları Birleştirme

Son olarak, kovalardaki sayıları birleştiririz. Bu, her kova sırasıyla taranarak yapılır.

let result = [];
for (let i = 0; i < buckets.length; i++) {
    result = result.concat(buckets[i]);
}

Yukarıdaki kod, kovalardaki sayıları birleştirerek sonucu döndürür. Tüm kodları birleştirerek, bucket sort algoritması aşağıdaki gibi görünebilir:

function bucketSort(arr, bucketCount) {
    let max = Math.max(...arr);
    let bucketSize = Math.ceil(max / bucketCount);
    let buckets = Array.from({ length: bucketCount }, () => []);

    for (let i = 0; i < arr.length; i++) {
        let bucketIndex = Math.floor(arr[i] / bucketSize);
        buckets[bucketIndex].push(arr[i]);
    }

    for (let i = 0; i < buckets.length; i++) {
        bubbleSort(buckets[i]);
    }

    let result = [];
    for (let i = 0; i < buckets.length; i++) {
        result = result.concat(buckets[i]);
    }

    return result;
}

function bubbleSort(arr) {
    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr.length - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

Daha sonra, bucket sort fonksiyonunu kullanarak diziyi sıralayabiliriz:

const sortedArr = bucketSort(arr, 5);
console.log(sortedArr);	// => [3, 8, 9, 16, 21, 25, 29, 37, 43, 49]

Görüldüğü gibi, bucket sort algoritması, verilen bir diziyi hızlı bir şekilde sıralamak için oldukça etkili bir yöntemdir.

Sonuç

Sonuç olarak, JavaScript’te bucket sort algoritması, bir dizi içindeki elemanları sıralamak için kullanılan bir algoritmadır. Bu algoritma, elemanları uygun kovalara yerleştirir, her kova içindeki elemanları ayrı ayrı sıralar ve son olarak kovalardaki elemanları birleştirerek sıralı bir dizi döndürür. Bu algoritma, büyük bir dizinin sıralanmasında diğer sıralama algoritmalarına göre daha hızlı sonuçlar verebilir.

Evet Javascript ile bucket sort algoritması bu şekilde yapılmakta. Tüm Javascript yazılarımıza buraya, sıralama algoritmaları yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu