Merhaba arkadaşlar, bu yazımda Kabarcık Sıralama(Bubble Sort) algoritmasını anlatmaya çalışacağım.
Kabarcık sıralama iki elemanın sürekli kendi arasında sıralama yapılarak gitmesine dayalı bir algoritmadır. Her geçişte en sona hep en büyük kalmaktadır.
Hemen bir örnek üzerinde anlatmaya başlıyorum.
Bir dizimiz olsun içerisindeki sayılar 6 8 3 10 7 2 4 olsun.
1. adımda 6 8 3 7 2 4 10 olur.
2. adım 6 3 7 2 4 8 10 olur.
3.adım 6 3 2 4 7 8 10
4.adım 3 2 4 6 7 8 10
5.adım 2 3 4 6 7 8 10
6.adım 2 3 4 6 7 8 10 şeklinde sıralanacaktır. Bunun algoritması şu şekildedir.
Kabarcık Sıralama Algoritması
Adım 1) İlk iki sayıyı al
Adım 2) Karşılaştır
Adım 3) Eğer sayı küçükse yaz sonrakini tut
Adım 4) Dizinin sonuna geldiysen tutulan sayıyı sona yaz
Adım 5) Dizinin sonuna geldi isen başa gel ve dizinin uzunluğu -1 olmuş gibi devam et. (En büyük en sona gittiği için dahil etmeyebiliriz.)
Adım 6) Adım 2’ye geri gidip tekrarla işlemleri
Kabarcık Sıralama C# Kodu
static void Main(string[] args) { int[] dizi = { 6, 8, 3, 10, 7, 2, 4 }; //dizimiz Kabarcik(dizi); for (int indis = 0; indis < dizi.Length; indis++) //elemanları yazdırmak için indis dönüyoruz Console.Write(dizi[indis] + " "); //elemanları yazdırıyoruz Console.ReadLine(); void Kabarcik(int[] A) // bir diziyi parametre alan Kabarcık isimli fonksiyonumuz { int takas; for (int i = 0; i < A.Length; i++) { for (int j = A.Length - 1; j > i; j--) //en büyük eleman sona geldiği için tekrar en sona gitmeye gerek yok. { if (A[j - 1] > A[j]) { takas = A[j - 1]; A[j - 1] = A[j]; A[j] = takas; } } } } }
Burada bir takas değişkenimiz var ve biz aslında en büyük sayımızı burada tutmuş oluyoruz. Ekran çıktısı aşağıdaki gibi sıralı şekilde olacaktır.
Java kodunda da değişiklik olmayacaktır. Sadece Java’da dizi uzunluğunu Length ile değil length ile alıyoruz.
Son olarak…
Kabarcık sıralama küçük diziler için çok kullanışlı ve kolay bir algoritmadır. Eğer kod üzerinde birkaç optimizasyon yaparsak sıralı dizi için 1 kez dönecektir. Eğer tersten sıralı ise dizi uzunluğunun 1 eksiği kadar dönecektir.
Umarım faydalı olmuştur kolay gelsin..