Dizi elemanlarını sıralarken sanki eleman diğerlerinin üzerinden bir baloncuk gibi kayıyor gibi düşünüldüğünden bu isim verilmiştir.
5,7,2,9,6,1,3
DİZİNİN ÜZERİNDEN İLK GEÇİŞTE
ilk iki elemana bakar 5 ? 7 . Sıkıntı yok devam
5,7,2,9,6,1,3
bir kayar ve diğer iki elemana bakar 7 ? 2 . Gerekli yer değiştirmeyi yapar.
5,2,7,9,6,1,3
bir kayar ve diğer iki elemana bakar 7 ? 9 . Sıkıntı yok devam.
5,2,7,9,6,1,3
bir kayar ve diğer iki elemana bakar 9 ?6 . Gerekli yer değiştirmeyi yapar.
5,2,7,6,9,1,3
bir kayar ve diğer iki elemana bakar 9?1 . Gerekli yer değiştirmeyi yapar.
5,2,7,6,1,9,3
bir kayar ve diğer iki elemana bakar 9?3 . Gerekli yer değiştirmeyi yapar.
5,2,7,6,1,3,9
- Bu işlemi n kadar tekrar ettiğinde yani aslında bir azalarak tekrar ettiğinde diziyi sıralamış oluyor. Bir azalarak dememizin sebebi her seferinde en büyük elemanı sona atıyor.
2. ALGORITMA ANALIZI
COMPLEXITY n^2
worst case : n , n-1 , n-2 .. n*(n+1)/2 : n^2 lik karmaşıklık.
best case : sıralı dizi. Hiç bir elemanın yerini değiştirmiyorsak dizi sıralı verilmiştir. Sıralımı kontrol yap bir kere geçip sıralı olduğunu farkederse n
Kıyaslama : insertion ve selection ile karmaşıklığı aynı çok büyük bir üstünlük sağlamaz.
iyileştirme : her geçişte son harici son 2 haricine bakmak gibi
3. BUBBLE SORT C# IMPLEMENTASYONU
public static void bubble_sort(List<double> dizi) { for (int i = 0; i < dizi.Count - 1; i++) { for (int j = 1; j < dizi.Count - i; j++) { if (dizi[j] < dizi[j - 1]) { double gecici = dizi[j - 1]; dizi[j - 1] = dizi[j]; dizi[j] = gecici; } } } }