Bubble Sort Algoritması C kodu Olarak Nasıl Yazılır

Bubble sort algoritması c kodu yazılımını oluşturmak çok kolaydır. Algoritmaya bakarak siz de yazabilirsiniz.


Bubble Sort Algoritması Çalışma Mantığı



1. Adım: Başlangıç indisindeki sayi ile bir sonraki indisteki sayıyı karşılaştır.

2. Adım: Eğer sonraki indisteki sayı ilk indisteki sayidan küçük ise swap işlemi uygula ve 1. adıma git

3. Adım: Eğer 2. Adımda Swap işlemi uygulanmadıysa başlangıç indisini bir artır ve 1. adıma git


Bir önceki makalemiz olan bubble sort nedir yazımızın örneğine baktıysanız algoritmamızı kağıt üzerinde uygulamaya kalktığımızda geçişler ve geçişler içerisinde adımlar olduğunu görmüşsünüzdür. Geçişler for döngüsüyle uygulanabilir, aynı şekilde, adımlar da geçişler içerisinde kullandığımız for döngüsünün içerisinde for döngüsü şeklinde uygulanmalıdır. Yani kodumuzu yazarken

for() {
    for() {
    }
}

gibi bir görünüme ulaşacağımız kesindir. Peki içlerini ne ile dolduracağız :) bakın hazır kod vermekle hiçbir şey olmaz. O iş çok kolay, "kopi pest" yapıp geçmesi benim için çok kolay, ancak bir algoritmanın kodunun nasıl yazılacağını, algoritmayı inceleyerek yazmak çok önemli bir unsur. Bunu yapabilirseniz bu iş tamamdır demektir. 

şimdi evrilen bir kod sistemi oluşturuyorum. Öncelikli olarak dizimizin elemanlarını dizi[n-1] değişkeninde tuttuğumuzu varsayıyorum. yani n tane sayımız var. bu yüzden maksimum n geçişimiz olabilir, bu yüzden ilk for döngüsünü yazıyorum.

for(int i=0; i<n; i++)
{}

Bu yazdığım geçişler için kullandığım for döngüsü. Unutmayın, her geçişimizin içerisinde adımlar olacak ve biz her adımda gerekiyorsa, yani şartımız sağlanıyorsa swap işlemi yapacağız, yok swap gerekmiyorsa dokunmayacağız. şimdi gelin içteki for döngüsünü yazalım; (NOT: Kırmızı yazılan kod yeni eklenen koddur)

for(int i=0; i<n; i++)
{
       for(int j = 0; j<n-1; j++)
       {}
}

İçteki for döngüsünü de yazdık. Bakın bir nokta dikkatinizi çekmiştir, n yerine n-1 yazdım. Neden? örneği hatırlayın, 6 elemanlı diziyi 2'şerli karşılaştırmak için 5 adım uygulamıştık. İşte tam da bu yüzden. Bu her zaman geçerlidir. Bubble sort algoritmasında içteki for döngüsü n kez değil, n-1 kez döner. 

Şimdi döndürüp duruyoruz ama neyi döndürüyoruz, ne işlem yapacağız esas mesele bu. Algoritmanın temeli neydi? iki sayıyı karşılaştır. küçük sayı solda değilse swap işlemi uygula. o zaman bir if statement lazım bize.

if(dizi[j+1]<dizi[j])
{
      int temp = dizi[j];
      dizi[j] = dizi[j+1]
      dizi[j+1] = temp;
}

bakın arkadaşlar, burada dedik ki, eğer ikinci sayı birinci sayıdan küçükse bunların yerlerini değiştir. Yani swap işlemi uygula. Şimdi if statement ifadesini for döngülerimin içerisine yerleştiriyorum;

for(int i=0; i<n; i++)
{
       for(int j = 0; j<n-1; j++)
       {
             if(dizi[j+1]<dizi[j])
            {
                   int temp = dizi[j];
                   dizi[j] = dizi[j+1]
                   dizi[j+1] = temp;
             }
        }
}

Bu yukarıdaki c kodu çalıştıkça bubble sort işlemlerini gerçekleştirecektir. Lütfen bu kodu IDE'nize kopyalıp da çalışmıyor diye bana çemkirmeyin :) Bu çalışmalık kod değil, Algoritmanın temelini koda nasıl dökeceğinizi anlattım. Çalıştırmalık kodu da paylaşacağım. Ama bir sonraki yazıda. Hatta siz bu yazıyı okurken ben çoktan o kodu eklemiş olurum. Sitede Bubble Sort C kodu Örneği diye aratırsanız çok rahat bulursunuz. (linke de tıklayabilirsiniz, o daha kolay)

Etiketler: , , ,