Python Kabarcık Sıralama (Bubble Sorting) Algoritması


Bu yazımızda, bir Sıralama algoritması olan “Kabarcık Sıralama” (Bubble Sorting) algoritmasına değineceğiz. Kabarcık Sıralama algoritmasını diziyi küçükten büyüğe sıralamak için kullanacağız.

Kabarcık Sıralama algoritmasının işleyişi, algoritmanın her adımında dizideki iki elemanı karşılaştırma üzerinedir. Küçükten büyüğe sıralama için; dizinin son elemanlarından başlayarak, iki eleman arasında küçük olan her adımda bir sola kayarak başa taşınır. 

Kaynak: Code Pumpkin

Buradaki bağlantıya tıklayarak, sıralama algoritmalarının çalışma şekillerine ait animasyona bakabilirsiniz.

Örnek olarak, “vekt” isimli dizinin adım adım küçükten büyüğe sıralanması:

vekt = [3, 5, 1, 10, -3, 8]

[3 5 1 10 -3 8]

[3 5 1 -3 10 8]

[3 5 -3 1 10 8]

[3 -3 5 1 10 8]

[-3 3 5 1 10 8]

[-3 3 5 1 8 10]

[-3 3 1 5 8 10]

[-3 1 3 5 8 10]

Algoritmanın kodları:

def kabarcik_sirala(vektor):
    for i in range(len(vektor)-1):
        for j in reversed(range(i+1, len(vektor))):
            if vektor[j] < vektor[j-1]:
                depo = vektor[j-1]
                vektor[j-1] = vektor[j]
                vektor[j] = depo
                #print(vektor) Algoritmanın adımlarını görmek için.
    print(vektor)

vekt = [3, 5, 1, 10, -3, 8]
kabarcik_sirala(vekt)

İlk döngü ( i ) en küçük elemanların atanacağı indisi temsil ediyor. İkinci döngüyü ( j ) ise dizinin iki elemanını kontrol etme amacıyla kullanıyoruz. Algoritma; dizinin son elemanından başlayarak, iki eleman arasındaki en küçük olanı başa taşıyor. Dolayısıyla ikinci döngü ( j ) dizinin son elemanından başlamalı ve son eleman ile kendisinden bir önceki elemanı kontrol ettiği için ilk döngünün bulunduğu yerin bir ilerisinde bitmelidir.[for j in reversed(range( i+1, len(vektor)))] “reversed” komutu, döngü iterasyonlarının azalan biçimde olmasını sağlıyor. Dizinin elemanlarının yerlerini değiştireceğimiz için bir saklama değişkeni(depo) kullanıyoruz. Programın ekran görüntüsü:

if” koşulunun içine sadece “vektor[j-1], vektor[j] = vektor[j], vektor[j-1]” yazarak kodlamayı kısaltabiliriz.

11. satırda sıralanmasını istediğimiz diziyi tanımlıyoruz, 12. satırda da fonksiyonumuzu çağırıyoruz.

Aldığımız çıktı:

Sıralama yapmak için “.sort()” fonksiyonunu kullanabilirsiniz.

Programın “.py” dosyasını aşağıdaki linkten indirebilirsiniz. Görüşmek üzere!

Sponsorlu LinkİNDİR (Devam Et butonuna bastıktan sonra dosya otomatik indirilecektir, sekmeyi kapatabilirsiniz.)

Kaynak: Carnegie Mellon University, School of Computer Science , Vikipedi

close

Yeni yazılardan haberdar olmak için sitemize abone olun.

İstenmeyen posta göndermiyoruz! Sadece yeni yazılarla ilgili mail alacaksanız.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir