Javascript

Javascript Quick Radix 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 quick radix sort algoritmasını anlatacağım. Hadi başlayalım !

Quick Radix Sort, Radix Sort ve Quick Sort algoritmaları birleştirilerek oluşturulan bir sıralama algoritmasıdır. Quick Sort algoritmasının pivot elemanını seçme yöntemi kullanılarak Radix Sort algoritmasının uygulandığı bir sıralama algoritmasıdır. Bu algoritma, özellikle büyük sayılar içeren veri kümelerinde hızlı bir şekilde çalışır ve zaman karmaşıklığı O(nk) olarak ifade edilir.

Şimdi, Quick Radix Sort algoritmasının nasıl çalıştığına ve JavaScript kod örnekleriyle nasıl uygulanabileceğine bakalım.

Quick Radix Sort Algoritması

Quick Radix Sort algoritması, sıralanacak sayıları basamaklarına ayırarak ve Quick Sort algoritması kullanarak sıralar. Algoritma şu adımları izler:

  1. Quick Sort algoritması ile birlikte kullanılmak üzere Radix Sort algoritması uygulanır.
  2. İlk olarak, en az önemli basamaktan başlayarak her bir sayının bu basamaktaki rakamı hesaplanır.
  3. Her bir sayı, hesaplanan rakamına göre ilgili bölümlere atanır.
  4. İkinci en az önemli basamaktan başlayarak, her bir bölümdeki sayılar tekrar aynı işlemden geçirilir.
  5. Bu işlem, en önemli basamakta tamamlanana kadar devam eder.
  6. Son olarak, tüm bölümlerdeki sayılar Quick Sort algoritması kullanılarak ayrı ayrı sıralanır.

Javascript Kodu

Şimdi, Quick Radix Sort algoritmasını JavaScript koduyla nasıl uygulayabileceğimize bakalım. Aşağıdaki örnekte, bir dizi sayının Quick Radix Sort kullanılarak sıralanması gösterilmektedir:

function quickRadixSort(arr) {
  // En büyük sayıyı bulma
  const maxNum = Math.max(...arr);
  // En büyük sayının basamak sayısını bulma
  const maxDigitCount = Math.floor(Math.log10(maxNum)) + 1;
  
  for (let i = 0; i < maxDigitCount; i++) {
    let digitBuckets = Array.from({length: 10}, () => []);
    for (let j = 0; j < arr.length; j++) {
      let digit = getDigit(arr[j], i);
      digitBuckets[digit].push(arr[j]);
    }
    arr = [].concat(...digitBuckets);
  }
  
  return quickSort(arr);
}

// Quick Sort Algoritması
function quickSort(arr) {
  if (arr.length <= 1) return arr;
  const pivot = arr[0];
  const left = [];
  const right = [];
  for (let i = 1; i < arr.length; i++) {
    arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
  }
  return quickSort(left).concat(pivot, quickSort(right));
}

// Sayının belirtilen basamaktaki rakamını getirir
function getDigit(num, i) {
  return Math.floor(num / Math.pow(10, i)) % 10;
}

// Örnek kullanım
const arr = [31, 78, 1, 13, 22, 6, 100];
const sortedArr = quickRadixSort(arr);
console.log(sortedArr); // [1, 6, 13, 22, 31, 78, 100]

Kod Açıklaması

Yukarıdaki kod örneğinde, quickRadixSort() fonksiyonu, Quick Radix Sort algoritmasını uygulayan ana fonksiyondur. Fonksiyon, öncelikle en büyük sayıyı bulmak için Math.max() kullanır. Daha sonra, en büyük sayının basamak sayısını bulmak için Math.log10() kullanır.

Sonrasında, dizi elemanlarının basamaklarına ayırmak için getDigit() fonksiyonu kullanılır ve bu rakamlara göre sayılar bölümlere atanır. Bölümler oluşturulduktan sonra, concat() fonksiyonu ile tüm bölümler birleştirilir. Bu işlem, en önemli basamakta tamamlandığında, tüm bölümlerdeki sayılar ayrı ayrı Quick Sort algoritması kullanılarak sıralanır.

getDigit() fonksiyonu, sayının belirtilen basamaktaki rakamını hesaplar. Bu fonksiyon, Math.floor() ve Math.pow() kullanarak basamak sayısını ve num sayısını hesaplar. Daha sonra, belirtilen basamaktaki rakamı bulmak için num sayısını bölerek, 10 ile modunu alır.

Sonuç

Son olarak, örnek kullanımda, arr dizisi Quick Radix Sort kullanılarak sıralanır ve sonuç sortedArr değişkenine atanır. Daha sonra, sonuç konsola yazdırılır.

Bu şekilde, JavaScript kullanarak Quick Radix Sort algoritmasını uygulayabilirsiniz.

Evet Javascript ile quick radix 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.

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