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 !
Table of Contents
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:
- 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.
- Elemanlar sırayla kovalara yerleştirilir.
- Her bir kova, içindeki elemanları sıralamak için farklı bir sıralama algoritması (örneğin Insertion Sort) kullanarak sıralanır.
- 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.