Python Bead 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 bead sort algoritmasını anlatacağım. Hadi başlayalım !
Table of Contents
Bead Sort Algoritması
Bead Sort algoritması, özellikle küçük boyutlu ve negatif olmayan tamsayı dizileri için oldukça etkili bir sıralama algoritmasıdır. Bu algoritma, dizinin elemanlarını boncuklar veya boncuklar olarak düşünebiliriz. Dizinin her elemanı için bir boncuk kullanılır ve her elemanın değeri, boncuk sayısına karşılık gelir. Ardından, boncuklar sıralı bir şekilde dizilir ve sonuç olarak, dizinin elemanları da sıralanır.
Python Kodu
Python’da Bead Sort algoritmasını uygulamak oldukça kolaydır. Aşağıda, bu algoritmanın nasıl uygulanacağına dair bir Python kod örneği verilmiştir.
def bead_sort(arr):
"""
Bead Sort algoritmasını uygular.
:param arr: Sıralanacak dizi
:return: Sıralanmış dizi
"""
# Dizinin uzunluğu
n = len(arr)
# Dizideki maksimum değer
max_val = max(arr)
# Tüm boncukları içeren bir liste oluşturulur
beads = [[0 for j in range(max_val)] for i in range(n)]
# Boncukları yerleştirir
for i in range(n):
for j in range(arr[i]):
beads[i][j] = 1
# Her sütundaki toplam boncuk sayısını hesaplar
for j in range(max_val):
sum = 0
for i in range(n):
sum += beads[i][j]
beads[i][j] = 0
# Boncukları aşağıya doğru hareket ettirir
for i in range(n - sum, n):
beads[i][j] = 1
# Diziyi yeniden oluşturur
sorted_arr = []
for i in range(n):
sorted_val = 0
for j in range(max_val):
if beads[i][j] == 1:
sorted_val += 1
sorted_arr.append(sorted_val)
return sorted_arr
Bu kod örneğinde, bead_sort adlı bir fonksiyon tanımlanmıştır. Bu fonksiyon, sıralanacak dizi arr parametresi ile çağrılır ve sıralanmış dizi sorted_arr değeri ile geri döndürülür.
İşlem Adımları
Fonksiyonun işleyişi aşağıdaki adımlarla açıklanabilir:
- Dizinin uzunluğu ve maksimum değeri belirlenir.
- Tüm boncukları içeren bir liste oluşturulur ve her elemanın değeri, boncuk sayısına karşılık gelir.
- Boncuklar, her elemanın değerine göre uygun sütuna yerleştirilir.
- Her sütundaki boncuk sayısı hesaplanır ve boncuklar aşağıya doğru hareket ettirilir.
- Son olarak, sıralanmış dizi yeniden oluşturulur ve geri döndürülür.
Örneğin, bead_sort([3, 1, 4, 2]) çağrısı ile sıralanacak dizi [3, 1, 4, 2]’dir. Bu dizi için boncuklar aşağıdaki gibi yerleştirilebilir:
OOO
O
OOOO
OO
Burada, O boncukları dizi elemanlarını temsil eder. İlk sütunda, 3 tane boncuk vardır çünkü ilk elemanın değeri 3’tür. İkinci sütunda, 1 boncuk vardır çünkü ikinci elemanın değeri 1’dir. Üçüncü sütunda, 4 boncuk vardır çünkü üçüncü elemanın değeri 4’tür. Son sütunda, 2 boncuk vardır çünkü son elemanın değeri 2’dir.
Daha sonra, her sütundaki boncuk sayısı hesaplanır ve boncuklar aşağıya doğru hareket ettirilir:
OOO
O
OOOO
OO
O
OOO
O
OOO
O
OOOO
O
OOO
OOOO
OOO
O
OO
Son olarak, sıralanmış dizi yeniden oluşturulur:
[1, 2, 3, 4]
Algoritma Performansı
Bu örnekte, Bead Sort algoritması, O(n) zaman karmaşıklığına sahiptir. Bu, algoritmanın etkili bir şekilde küçük boyutlu dizileri sıralayabileceği anlamına gelir. Ancak, büyük boyutlu diziler için daha az verimli olabilir.
Sonuç
Bead Sort algoritması, nadiren kullanılan bir sıralama algoritmasıdır. Ancak, bu algoritmayı kullanarak sıralama işlemini gerçekleştirmek, özellikle küçük boyutlu tamsayı dizileri için oldukça etkili bir yaklaşım olabilir.
Evet Python ile bead 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.