Python

Python Bucket Sort Algoritması

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

Bucket Sort Nedir?

Bucket Sort, sıralanacak elemanları belli aralıklara bölerek sıralama işlemini gerçekleştiren bir sıralama algoritmasıdır. Bu aralıklar, “kova” veya “bucket” adı verilen boş konteynerler tarafından temsil edilir.

Bucket Sort, özellikle elemanların birbirine yakın olduğu durumlarda etkili bir sıralama algoritmasıdır. Örneğin, 0-1 aralığında rastgele ondalık sayılar verilen bir listedeki sayıları sıralamak için Bucket Sort kullanılabilir.

Bucket Sort Nasıl Çalışır?

Bucket Sort algoritması şu adımları izler:

  1. Elemanların aralığına uygun sayıda boş kova oluşturulur. Bu kovaların sayısı, sıralanacak elemanların aralığına bağlıdır.
  2. Elemanlar sırayla kovalara yerleştirilir.
  3. Her bir kova, içindeki elemanları sıralamak için farklı bir sıralama algoritması (örneğin Insertion Sort) kullanarak sıralanır.
  4. Kovalardaki elemanlar birleştirilerek sıralanmış liste oluşturulur.

Python Kod Örnekleri

1. Bucket Sort Fonksiyonu

Bu örnek, 0-1 aralığında rastgele ondalık sayılar içeren bir liste alır ve Bucket Sort kullanarak bu sayıları sıralar.

import random

def bucket_sort(arr):
    # Kova sayısı
    bucket_count = len(arr)
    # Boş kovalar
    buckets = [[] for _ in range(bucket_count)]
    # Elemanları kovalara yerleştirme
    for num in arr:
        index = int(num * bucket_count)
        buckets[index].append(num)
    # Kovaları sıralama
    for i in range(bucket_count):
        buckets[i] = insertion_sort(buckets[i])
    # Kovalardaki elemanları birleştirme
    sorted_arr = []
    for bucket in buckets:
        sorted_arr += bucket
    return sorted_arr

# Insertion Sort Fonksiyonu
def insertion_sort(arr):
    for i in range(1, len(arr)):
        key_item = arr[i]
        j = i - 1
        while j >= 0 and arr[j] > key_item:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key_item
    return arr

# Test
arr = [random.random() for _ in range(10)]
print("Sırasız Liste: ", arr)
print("Sıralı Liste: ", bucket_sort(arr))

2. Bucket Sort Sınıfı

Bu örnek, Bucket Sort’u bir sınıf olarak uygular.

import random

class BucketSort:
    def __init__(self, bucket_count):
        self.bucket_count = bucket_count

    def sort(self, arr):
        buckets = [[] for _ in range(self.bucket_count)]
        # Elemanları kovalara yerleştirme
        for num in arr:
            index = int(num * self.bucket_count)
            buckets[index].append(num)
        # Kovaları sıralama
        for i in range(self.bucket_count):
            buckets[i] = self.insertion_sort(buckets[i])
        # Kovalardaki elemanları birleştirme
        sorted_arr = []
        for bucket in buckets:
            sorted_arr += bucket
        return sorted_arr

    def insertion_sort(self, arr):
        for i in range(1, len(arr)):
            key_item = arr[i]
            j = i - 1
            while j >= 0 and arr[j] > key_item:
                arr[j + 1] = arr[j]
                j -= 1
            arr[j + 1] = key_item
        return arr

# Test
arr = [random.random() for _ in range(10)]
bucket_sort = BucketSort(bucket_count=10)
print("Sırasız Liste: ", arr)
print("Sıralı Liste: ", bucket_sort.sort(arr))

Sonuç

Bu makalede, Bucket Sort algoritmasının ne olduğunu, nasıl çalıştığını ve Python dilinde nasıl kodlandığını öğrendiniz. Bucket Sort, elemanların birbirine yakın olduğu durumlarda diğer sıralama algoritmalarına göre daha etkilidir. Ancak, elemanlar arasındaki farklar çok büyük olduğunda veya eleman sayısı çok fazlaysa, daha etkili sıralama algoritmaları kullanılması daha uygun olabilir.

Evet Python ile bucket sort algoritması bu şekilde yazılmakta. Tüm Python 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