Kabarcık Sıralama Algoritması (Bubble Sort Algorithm)

Kabarcık sıralama, bitişik elemanları tekrar tekrar karşılaştırarak ve yanlış sırada olmaları durumunda yerlerini değiştirerek çalışan basit bir sıralama algoritmasıdır. Algoritma dizinin başından başlar ve ilk iki elemanı karşılaştırır. İlk eleman ikinci elemandan büyükse, yerleri değiştirilir.
Algoritma daha sonraki iki elemana geçer ve işlemi tekrarlar. Bu, dizinin sonuna ulaşılana kadar devam eder.
Kabarcık Sıralama Algoritması Verimli Mi?
Kabarcık sıralama algoritması, anlaşılması ve uygulanması çok basit bir algoritmadır. Ancak, büyük diziler için çok verimli değildir. Kabarcık sıralamanın en kötü durum zaman karmaşıklığı O(n²)’dir; burada n, dizideki eleman sayısıdır. Bu, diziyi sıralamak için geçen sürenin, eleman sayısı arttıkça karesel olarak arttığı anlamına gelir.
Kabarcık sıralama algoritması, büyük dizileri sıralamak için çok iyi bir algoritma değildir. Bununla birlikte, küçük dizileri sıralamak veya eğitim amaçlı kullanım için faydalı olabilir.
Kabarcık Sıralama Algoritmasının Adımları
Kabarcık Sıralama algoritmasının adımları şöyle:
- Sıralanmamış bir eleman dizisiyle başlayın.
- İlk elemanı ikinci elemanla karşılaştırın. İlk eleman ikinci elemandan büyükse, yerlerini değiştirin.
- Sonraki eleman çiftine (2. ve 3.) geçin ve dizinin sonuna ulaşana kadar karşılaştırmaya ve yer değiştirmeye devam edin.
- Bu noktada, en büyük eleman dizisinin sonundaki doğru konumda olacaktır.
- Son eleman hariç, diğer tüm elemanlar için 2-4 arasındaki adımları tekrarlayın.
- Her yinelemeden sonra, bir sonraki en büyük eleman dizinin sonundaki doğru konumda olacaktır.
- Tüm dizi sıralanana kadar yinelemeye devam edin.
Diyelim ki sıralanmamış bir dizimiz var: [5, 3, 8, 2, 1]
1. Döngü
- 5 ve 3’ü karşılaştırma: Yer değiştir [3, 5, 8, 2, 1]
- 5 ve 8’i karşılaştırma: Yer değiştirme yok [3, 5, 8, 2, 1]
- 8 ve 2’yi karşılaştırma: Yer değiştir [3, 5, 2, 8, 1]
- 8 ve 1’i karşılaştırma: Yer değiştir [3, 5, 2, 1, 8]
Sonuç: [3, 5, 2, 1, 8]
2. Döngü
- 3 ve 5’i karşılaştırma: Yer değiştirme yok [3, 5, 2, 1, 8]
- 5 ve 2’yi karşılaştırma: Yer değiştir [3, 2, 5, 1, 8]
- 5 ve 1’i karşılaştırma: Yer değiştir [3, 2, 1, 5, 8] 8]
Sonuç: [3, 2, 1, 5, 8]
3. Döngü
- 3 ve 2’yi karşılaştırma: Yer değiştirme [2, 3, 1, 5, 8]
- 3 ve 1’i karşılaştırma: Yer değiştirme [2, 1, 3, 5, 8]
Sonuç: [2, 1, 3, 5, 8]
4. Döngü
- 2 ve 1’i karşılaştırma: Yer değiştirme [1, 2, 3, 5, 8]
Sonuç: [1, 2, 3, 5, 8]
Kabarcık Sıralama Algoritması Nerelerde Kullanılır?
Kabarcık sıralama, bir eleman dizisini tekrar tekrar tarayan ve bitişik elemanları karşılaştıran, yanlış sırada ise yerlerini değiştiren basit bir sıralama algoritmasıdır. Kabarcık sıralama büyük veri kümeleri için verimli olmasa da, verimlilikten ziyade basitlik ve uygulama kolaylığının önceliklendirildiği belirli senaryolarda yine de kullanılabilir. İşte kabarcık sıralamanın kullanılabileceği bazı alanlar:
- Eğitim Amaçlı: Kabarcık sıralama, bilgisayar bilimi ve programlama derslerinde giriş niteliğinde bir sıralama algoritması olarak sıklıkla kullanılır. Basit uygulaması, yeni başlayanların sıralama ve algoritma analizi kavramlarını anlamalarına yardımcı olur.
- Küçük Veri Kümeleri: Kabarcık sıralama, yalnızca birkaç eleman içeren diziler veya listeler gibi küçük veri kümelerini sıralamak için uygun olabilir. Bu gibi durumlarda, kabarcık sıralama ile daha karmaşık algoritmalar arasındaki performans farkı ihmal edilebilir düzeydedir.
- Kısmen Sıralanmış Veriler: Giriş verileri zaten kısmen sıralanmışsa, kabarcık sıralama nispeten verimli olabilir. Giriş zaten sıralı olduğunda, listenin sıralı olduğunu doğrulamak için yalnızca tek bir geçiş gerektirdiğinden, en iyi durum zaman karmaşıklığı O(n)’dir.
- Çevrimiçi Sıralama: Kabarcık sıralama, zaten sıralı bir listeye sürekli olarak yeni elemanlar eklendiği durumlarda kullanılabilir. Kabarcık sıralama, bitişik elemanları karşılaştırıp değiştirdiği için, sıralama düzenini korurken yeni elemanları kolayca barındırabilir.
- Sıralama Algoritmalarının Öğretilmesi ve Gösterilmesi: Kabarcık sıralama, sıralama algoritmalarının kavramını ve performans özelliklerini göstermek için sıklıkla kullanılır. Sıralama algoritmalarının nasıl çalıştığını ve verimliliklerinin nasıl değişebileceğini göstermenin basit ve görsel bir yolunu sağlar.
Programlama Dillerinde Kabarcık Sıralama Algoritması
Kabarcık sıralama algoritması herhangi bir programlama dilinde uygulanabilir.
Python Kabarcık Sıralama Algoritması
def bubble_sort(arr):
n = len(arr)
# Traverse through all array elements
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
# Traverse the array from 0 to n-i-1
# Swap if the element found is greater than the next element
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
# Example usage:
array = [5, 3, 8, 2, 1]
print(bubble_sort(array))JavaScript Kabarcık Sıralama Algoritması
function bubbleSort(arr) {
var len = arr.length;
var swapped;
do {
swapped = false;
for (var i = 0; i < len - 1; i++) {
if (arr[i] > arr[i + 1]) {
// Swap elements
var temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
swapped = true;
}
}
// Optimized: Reduce the number of iterations on each pass
len--;
} while (swapped);
return arr;
}
// Example usage:
var array = [5, 3, 8, 2, 1];
console.log(bubbleSort(array));