Dizi elemanlarını sıralamak için birçok algoritma bulunmaktadır. Bu algoritmalar arasında kolay olması nedeniyle en çok kullanılanlardan biri kabarcık sıralama (bubble sort) algoritmasıdır. Bu yazımda C# dilini kullanarak kabarcık sıralama algoritmasını console uygulaması olarak kodlayacağım.
Öncelikle algoritmanın çalışma mantığı hakkında kısa bir bilgi vermekte fayda var. Kabarcık sıralama algoritmasında, komşu iki eleman birbiriyle karşılaştırılır ve kendi aralarında uygun yerde değilseler yerleri değiştirilir. Bu işlem sıralama gerçekleşene kadar devam eder.
Kabarcık sıralama algoritmasını gerçekleştirmek için iki döngü kullanılır. Birinci döngü ile elemanlar arasında hareket edilir, ikinci döngü ile de yerine oturmayan elemanlar yer değiştirme işlemine tabi tutulur. Aşağıdaki resimde yer değiştirme işlemini adım adım göstermeye çalıştım. Her defasında karşılaştırılan elemanları koyu olarak gösterdim.
Algoritmanın çevrim sayısı dizinin eleman sayısından bir eksik olmak zorundadır. Yukarıdaki örnekte 6 adet değer olduğu için çevrim sayısı 5’tir. Son çevrimde değişiklik olmadığı için tekrardan yazmadım.
Kabarcık sıralama algoritmasının C# kodları aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace KabarcıkSıralamaAlgoritması { class Program { static void Main(string[] args) { int[] dizi = { 6, 12, 24, 3, 8, 4}; kabarcikSirala(dizi); diziYazdir(dizi); } public static void kabarcikSirala(int[]siralanacakDizi) { int i = 1, j, deger; int diziAdet = siralanacakDizi.Length; while (i < diziAdet) { j = diziAdet - 1; while (j >= 1) { if (siralanacakDizi[j - 1] > siralanacakDizi[j]) { deger = siralanacakDizi[j]; siralanacakDizi[j] = siralanacakDizi[j - 1]; siralanacakDizi[j - 1] = deger; } j--; } i++; } } public static void diziYazdir(int[] dizi) { for (int i = 0; i < dizi.Length; i++) { Console.WriteLine(dizi[i]); } Console.ReadKey(); } } } |
Kabarcık sıralama algoritmasını elimden geldiğince açıklamaya çalıştım, konuyla ilgili sorularınızı yorum olarak iletebilirsiniz.