Javascript

Javascript Block 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 block sort algoritmasını anlatacağım. Hadi başlayalım !

Block Sort Algoritması

Block sort algoritması, verileri sıralamak için kullanılan bir algoritma türüdür. Bu algoritma, adından da anlaşılacağı gibi, bir veri kümesini bloklara ayırır ve her blok içindeki elemanları sıralar. Daha sonra, bloklar birleştirilerek tam sıralama elde edilir. Bu makalede, block sort algoritmasını kullanarak bir veri kümesini sıralama sürecini içeren bir JavaScript kod örneği verilecektir.

Javascript Kodu

Veri Kümesi Oluşturma

Öncelikle, bir veri kümesi oluşturarak başlayalım:

const arr = [5, 8, 1, 3, 6, 2, 7, 4];

Veri Kümesini Bloklara Ayırma

Bu veri kümesi, sıralanması gereken sayıları içermektedir. Block sort algoritması uygulanmadan önce, veri kümesi bloklara ayrılmalıdır. Blok boyutu genellikle küçük bir sabit değerdir. Örneğin, burada blok boyutunu 2 olarak belirleyebiliriz:

const blockSize = 2;
const blocks = [];

for (let i = 0; i < arr.length; i += blockSize) {
  blocks.push(arr.slice(i, i + blockSize));
}

Bu kod bloğu, veri kümesini bloklara ayıran bir döngü içerir. Döngü, blok boyutunu kullanarak veri kümesini küçük parçalara ayırır ve her bir parçayı “blocks” adlı bir diziye ekler.

Bloklardaki Elemanları Sıralama

Bir sonraki adım, bloklar içindeki elemanları sıralamaktır. Bunun için, her blokta bulunan elemanları sıralayan bir fonksiyon kullanacağız:

function sortBlock(block) {
  return block.sort((a, b) => a - b);
}

blocks = blocks.map(sortBlock);

Bu kod bloğu, “sortBlock” adlı bir fonksiyon tanımlar. Bu fonksiyon, bir blok alır ve blok içindeki elemanları sıralar. Sonra, “map” fonksiyonu kullanılarak “blocks” dizisindeki her bir blok sıralanır.

Blokları Birleştirme

Son adım, blokları birleştirerek tam sıralamayı elde etmektir. Bunun için, birleştirme işlemini gerçekleştiren bir döngü kullanabiliriz:

let sortedArr = [];

while (blocks.length > 0) {
  let smallestIndex = 0;

  for (let i = 1; i < blocks.length; i++) {
    if (blocks[i][0] < blocks[smallestIndex][0]) {
      smallestIndex = i;
    }
  }

  sortedArr.push(blocks[smallestIndex].shift());

  if (blocks[smallestIndex].length === 0) {
    blocks.splice(smallestIndex, 1);
  }
}

console.log(sortedArr);

Bu kod bloğu, “sortedArr” adlı bir dizi tanımlar ve sıralanmış verileri içerir. Döngü içinde, “blocks” adlı dizi boşaltılana kadar çalışır. Her adımda, “smallestIndex” adlı bir değişken en küçük elemanı içeren bloğun indeksini tutar. Bu, bloklar içindeki elemanlar arasında karşılaştırma yapmak için kullanılır.

Daha sonra, “sortedArr” adlı diziye en küçük eleman eklenir ve bu elemanın bloktan silinmesi sağlanır. Eğer blok artık eleman içermiyorsa, blok “blocks” dizisinden silinir.

Sonuç olarak, bu kod bloğu veri kümesini bloklara ayırır, her blok içindeki elemanları sıralar ve blokları birleştirerek tam sıralamayı elde eder. İşte, tam kod:

let arr = [5, 8, 1, 3, 6, 2, 7, 4];
const blockSize = 2;
let blocks = [];

for (let i = 0; i < arr.length; i += blockSize) {
  blocks.push(arr.slice(i, i + blockSize));
}

function sortBlock(block) {
  return block.sort((a, b) => a - b);
}

blocks = blocks.map(sortBlock);

let sortedArr = [];

while (blocks.length > 0) {
  let smallestIndex = 0;

  for (let i = 1; i < blocks.length; i++) {
    if (blocks[i][0] < blocks[smallestIndex][0]) {
      smallestIndex = i;
    }
  }

  sortedArr.push(blocks[smallestIndex].shift());

  if (blocks[smallestIndex].length === 0) {
    blocks.splice(smallestIndex, 1);
  }
}

console.log(sortedArr); // [1, 2, 3, 4, 5, 6, 7, 8]

Sonuç

Bu örnek kod, block sort algoritmasının nasıl çalıştığını ve JavaScript’te nasıl uygulanabileceğini gösterir. Veri kümesi ve blok boyutunu değiştirerek, farklı sıralama senaryolarını deneyebilirsiniz.

Evet Javascript ile block sort algoritması bu şekilde olmakta. Tüm Javascript yazılarımıza buraya, diğer 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