Merhabalar arkadaşlar Sıralama Algoritmaları Bubble Sort ile devam ediyoruz. Geçen yazımda Linear Sort‘u ele almıştık.Bu yazımızda da Bubble Sort diğer bir deyişle Kabarcık Sıralamasını ele alacağız.
Bu algoritmanın adım adım işleyişine bir örnekle bakalım;
8 0 3 5 2 4 şeklindeki diziyi bubble sort ile sıralarsak,
1. Adim: 8 0 3 5 2 4 -- 0 8 3 5 2 4 0 8 3 5 2 4 -- 0 3 8 5 2 4 0 3 8 5 2 4 -- 0 3 5 8 2 4 0 3 5 8 2 4 -- 0 3 5 2 8 4 0 3 5 2 8 4 -- 0 3 5 2 4 8 (8 dizideki en büyük eleman olarak bulundu ve en sona atıldı artık bu elemanı kontrol etmemizi gerektirecek bir şey yok.)
2. Adim: 0 3 5 2 4 8 -- 0 3 5 2 4 8 0 3 5 2 4 8 -- 0 3 5 2 4 8 0 3 5 2 4 8 -- 0 3 2 5 4 8 0 3 2 4 5 8 -- 0 3 2 4 5 8 (8 den sonraki en büyük 2. Eleman 5 olarak bulundu ve sondan2.sıraya yerleştirildi.)
3. Adim: 0 3 2 4 5 8 -- 0 3 2 4 5 8 0 3 2 4 5 8 -- 0 2 3 4 5 8 0 2 3 4 5 8 -- 0 2 3 4 5 8 (5 en sonraki en büyük eleman ise 4 olarak bulundu ve aynı şekilde 5 in hemen peşine atandı.)
4. Adim: 0 2 3 4 5 8 -- 0 2 3 4 5 8 0 2 3 4 5 8 -- 0 2 3 4 5 8 (4 den sonraki en büyük eleman 3 olarak belirlendi ve 4’ün peşine yerleştirildi.)
5. Adim: 0 2 3 4 5 8 -- 0 2 3 4 5 8 (3 den sonraki en büyük eleman olarak 2 bulundu ve 3 ün hemen peşine yerleştirildi.)
Bu şekilde sırasız olan dizimiz artık sıralanmış şekilde…
Akış diyagramını incelersek;
Ve c# kodlarını inceleyelim..
public void BubbleSort(int[] dizi) {
int yedek;
for (int i = 0; i <= dizi.Length - 1; i++)//dizinin son elemanını karşılaştırma durumumuz olmadığından dizinin sondan bir önceki elemanına kadar döngü kuracağız.
{
for (int j = 1; j <= dizi.Length - 1; j++)
{
if (dizi[j-1] > dizi[j])//bir önceki eleman şimdiki elemandan büyük mü ?
{//evet ise yapılan işlemler
yedek= dizi[j-1];
dizi[j-1] = dizi[j];
dizi[j] = yedek;
}
}
} }
Sıralama algoritmalarından biri olan Bubble Sort’u da inceledik.Sonraki yazılarımızda görüşmek üzere hoşçakalın…!