Javascript

Javascript Counting Sort Algoritması

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

Counting Sort, sıralama işlemi için özellikle küçük sayılarla çalışırken çok etkili olan bir sıralama algoritmasıdır. Bu algoritma, her elemanın sayısal bir değerle eşleştirilebildiği durumlarda en hızlı sıralama algoritmalarından biridir.

Counting Sort algoritması, sıralanacak elemanların sıralı bir listesi yerine, bir dizi veya aralık şeklinde verildiğinde oldukça etkilidir. Örneğin, sadece 0 ile 9 arasındaki sayıları içeren bir diziyi sıralamak için kullanılabilir. Bu algoritmanın temel prensibi, her elemanın sayısını saymak ve ardından bu sayıları kullanarak elemanları sıralamaktır.

Counting Sort algoritması, sıralanacak elemanların minimum ve maksimum değerlerini bulur ve bu değerler arasındaki her tam sayı için bir sayaç oluşturur. Daha sonra, her elemanın değerine karşılık gelen sayaçlara 1 ekler ve son olarak, sayacı kullanarak sıralı bir dizi oluşturur.

Bu işlem, birinci adımda, tüm elemanlarının değerlerini sayı sayacına eklemekle başlar. İkinci adımda, sayı sayacını, sayıların toplam sayısından küçük olana kadar tararız. Üçüncü adımda, sayıları sıralı bir diziye yerleştiririz.

JavaScript’te Counting Sort algoritmasını uygulamak oldukça basittir. İlk olarak, sıralanacak dizinin minimum ve maksimum değerlerini bulmanız gerekiyor. Daha sonra, sayı sayacını oluşturmak için bir boş dizi tanımlamanız gerekiyor. Bu sayacı, dizinin her elemanı için tarayarak doldurmanız gerekiyor.

Son olarak, sayacı kullanarak sıralı bir dizi oluşturmanız gerekiyor. Bu işlem, sayacın her bir elemanını tarayarak, her bir sayının kaç kez tekrarlandığını bulmak ve bu sayıların doğru sırayla yeni bir diziye yerleştirilmesiyle gerçekleştirilir.

Javascript Counting Sort Algoritması Kodu

Aşağıda, JavaScript’te Counting Sort algoritmasını uygulamak için bir örnek kod bulabilirsiniz:

function countingSort(arr) {
    const min = Math.min(...arr);
    const max = Math.max(...arr);
    let count = [];
    let sortedArr = [];

    for (let i = 0; i <= max - min; i++) {
        count[i] = 0;
    }

    for (let i = 0; i < arr.length; i++) {
        count[arr[i] - min]++;
    }

    for (let i = min; i <= max; i++) {
        while (count[i - min] > 0) {
            sortedArr.push(i);
            count[i - min]--;
        }
    }

    return sortedArr;
}

Bu kodu kullanarak bir örnek üzerinden anlatmaya çalışalım. Örneğin, aşağıdaki şekilde tanımlanmış bir diziye sahip olalım:

const arr = [2, 5, 3, 0, 2, 3, 0, 3];

İlk olarak, dizinin minimum ve maksimum değerlerini bulmalıyız:

let min = Math.min(...arr);
let max = Math.max(...arr);

Burada Math.min ve Math.max fonksiyonları kullanılarak dizinin minimum ve maksimum değerleri bulunmuştur. Daha sonra, sayı sayacını oluşturmak için bir boş dizi tanımlamamız gerekiyor:

Burada count dizisi, sayıların tekrar sayısını depolamak için kullanılacak. Daha sonra, count dizisini sıfırlarla doldurmalıyız:

for (let i = 0; i <= max - min; i++) {
  count[i] = 0;
}

Burada, count dizisi, minimum ve maksimum değerler arasındaki her tam sayı için bir sayaç oluşturmak için kullanılmıştır. Daha sonra, dizi elemanlarını count dizisinde sayarak doldurmalıyız:

for (let i = 0; i < arr.length; i++) {
  count[arr[i] - min]++;
}

Burada, arr dizisinin her bir elemanı, minimum değerden çıkarılarak, count dizisindeki doğru konuma yerleştirilmiştir. Son olarak, count dizisini kullanarak sıralı bir dizi oluşturmalıyız:

for (let i = min; i <= max; i++) {
  while (count[i - min] > 0) {
    sortedArr.push(i);
    count[i - min]--;
  }
}

Burada, count dizisindeki her bir eleman taranır ve her bir sayının kaç kez tekrarlandığını bulmak için kullanılır. Bu sayılar, doğru sırayla sortedArr dizisine yerleştirilir. Sonuç olarak, sortedArr dizisi, sıralanmış dizi olarak döndürülür.

Counting Sort Algoritması Avantajları ve Dezavantajları

Counting Sort algoritmasının zaman karmaşıklığı O(n+k) olarak hesaplanır, burada n, sıralanacak dizi elemanlarının sayısı ve k, elemanların değerlerinin aralığıdır.

Ancak, bu algoritmanın bazı dezavantajları da vardır. Örneğin, elemanların sayısı çok büyük olduğunda veya elemanların değerleri arasında çok büyük bir fark varsa, count dizisinin boyutu çok büyük olabilir ve bu da performans sorunlarına neden olabilir. Ayrıca, bu algoritmanın sıralama işlemi için ek bir dizi gerektirmesi de bir dezavantajdır.

Bu dezavantajlara rağmen, Counting Sort algoritması özellikle küçük sayılarla çalışırken oldukça etkilidir ve diğer sıralama algoritmalarına göre daha hızlı çalışabilir.

Sonuç

Sonuç olarak, Counting Sort algoritması, belirli koşullar altında oldukça etkili bir sıralama algoritmasıdır. Ancak, performans sorunlarına neden olabilecek bazı dezavantajları vardır. Bu nedenle, kullanmadan önce ihtiyaçları ve sıralanacak verilerin özelliklerini dikkate almak önemlidir.

Evet Javascript ile counting sort algoritmasının kullanımı bu şekilde yapılmakta. 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.

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu