Merhaba. Bu yazımda sıralama algoritmalarından olan bubble sort’dan bahsedeceğim. Bubble Sort -türkçe adıyla kabarcık sıralama- maksimum her eleman  için eleman sayısı kadar işlem yapıldığında sıralama işlemini tamamlamış oluyor.

Mantığı ise şu şekilde ;

Üzerinde bulunduğum indeksteki değer bir sonraki indeksteki değerden büyükse ikisinin yerini değiştir. Bu tabi küçükten büyüğe sıralamak istediğimizde geçerli. Büyüksen küçüğe sıralamak için tam tersi şuanda bulunduğum indeksteki değer bir sonraki indeksteki değerden küçük ise yer değiştir sartını uygulamalıyız. Ve bunu her indeks için eleman sayısı kadar yaptığınızda değerleriniz sıralanmış oluyor.

Bir görsel ile anlatmak gerekirse ;

bubble sort transition

gördüğünüz üzere küçükten büyüğe sıralama işlemi yapıyoruz ve şuan bulunduğum indekste 10 değerini görüyorum bir sonraki değer ise 7 . Bulunduğum indeksteki değer bir sonraki indeksteki değerden büyük olduğundan yer değiştiriyorum.

Bir kod örneğiyle anlatmak gerekirse aşağıdaki görselde okuması basit olması için Python ile yazdığım kodu göreceksiniz.

bubble sort python example code

Evet. Gördüğünüz üzere aryExample adında içinde değerler bulunan bir  listem var. Bu listenin içindeki değerleri sıralayacağız. İlk döngüm sizlere bahsettiğim her eleman için eleman sayısı kadar işlem yapabilmemi sağlıyor. Onun içindeki döngümüz ise dizinin içeriğinde gezinebilmemiz için. En içteki şartım ise bir sonraki değer şimdikinden büyük mü diye kontrol ediyor. Eğer büyük ise iki elemanın yerini değiştiriyor.

Bu kodumuz ;

bubble sort output

çıktıda gördüğünüz üzere listemizdeki değerleri sıralı bir şekilde bize gösteriyor.

Şimdi bu algoritmanın çok kısa analizinden bahsedelim.

Karmaşıklık Analizi

Algoritma analizi yaparken genellikle Big O Notasyonundan faydalanıyoruz. Daha bu konuyu yazılarımda anlatmadığım için bu konuyu başka kaynaklarda bakınmanızı öneririm. Algoritma analizi önemli bir konudur. Algoritmanızın ne kadar zaman harcadığı yada ne kadar bellek harcadığı gibi bilgileri bulabilir ve algoritmalar arasında daha iyilik, daha kötülük karşılaştırmaları yapabilirsiniz.

Kısaca bu algoritmanın zaman karmaşıklığı Big O Notasyonuna göre iç içe aynı boyutta iki döngüm bulunduğundan O(n^2)’dir.  Bu bize yaklaşık olarak algoritmamızın listemizin uzunluğunun karesi kadar zaman harcayacağını ifade ediyor.

Bu konuyla ilgili yazımı yazdığımda buraya linkini bırakırım.

İyi günler İyi Çalışmalar.