Programlama dünyasında sıralama için birçok algoritma geliştirilmiştir. Bugün en temellerinden olan “Bubble Sort” algoritmasını C dilinde ele alacağım.
Bubble sort algoritmasının temeli bir diziyi döndürerek sıradaki sayının bir önceki sayı ile olan durumunu kontrol etmeye dayanır. Dizinin 2. elemanından başlayarak sonuna kadar ilerlenir ve her gelen sayının, tüm dizideki sayılar ile durumu kontrol edilir.
Resimdeki diziyi her satırı bir adım varsayarak bubble sort algoritması ile küçükten büyüğe sıralayacak olursak;
- 26 ile 54 karşılaştırılır. 26, 54’ten küçük olduğu için yerleri değiştirilir.
- 93 ile 54 karşılaştırılır. 93, 54’ten küçük olmadığı için aynı kalır.
- 17 ile 93 karşılaştırılır. 17, 93’ten küçük olduğu için yerleri değiştirilir.
- 77 ile 93 karşılaştırılır. 77, 93’ten küçük olduğu için yerleri değiştirilir.
- 31 ile 93 karşılaştırılır. 31, 93’ten küçük olduğu için yerleri değiştirilir.
- 44 ile 93 karşılaştırılır. 44, 93’ten küçük olduğu için yerleri değiştirilir.
- 55 ile 93 karşılaştırılır. 55, 93’ten küçük olduğu için yerleri değiştirilir.
- 20 ile 93 karşılaştırılır. 20, 93’ten küçük olduğu için yerleri değiştirilir.
Şimdi diyeceksiniz ki neden bunları teker teker yazdın? 😀 Bir algoritmayı anlamak için adım adım kağıda dökmek en eski ve en iyi yöntemdir. Bir kodu deneme yanılma yolu ile test edip doğru sonucu elde edebilirsiniz ama bu kalıcı bir öğrenme şekli değildir.
Örnekte gördüğünüz gibi 93 sayısı en büyük olduğu için sona kadar değişerek ilerledi. İşin biraz daha kodlama boyutuna inecek olursak. Bu sayıların yerlerini değiştirmek için bir temporary (geçici) değişken oluşturulur. Yer değiştirmek için sırasıyla şunlar yapılır;
Not: Bu anlatılanlar küçükten büyüğe sıralama için geçerlidir. Büyükten küçüğe için tam tersi düşünmeniz gerek.
- Eğer sıradaki sayı öncekinden küçük ise sayı temp değişkenine atanır.
- Dizinin geçerli elemanı bir önceki elemanı ile değiştirilir.
- Dizinin geçerli elemanından bir önceki eleman temp değişken ile değiştirilir.
Şimdi C kod örneğini paylaşabilirim.