Algoritma GeliştirmeC programlamaKategori dışı

BUBLESORT ALGORİTMASI

image_pdfimage_print

Bublesort Algoritması (Kabarcık Sıralama Algoritması)

 

C Programlama Dili Bubble Sort Algoritması ile kullanıcının girdiği sayıları küçükten büyüğe sıralayan program kodu. Sıralama algoritmaları arasında en çok bilinen Bubble Sort (Kabarcık Sıralama) algoritmasını bulabilirsiniz.

  1. Kullanıcıdan gireceği sayı adedi öğrenilir.
  2. Kullanıcıdan sayılar alınır.
  3. Girilen sayılar ekrana yazdırılır.
  4. Bubble Sort algoritması ise sayılar küçükten büyüğe sıralandırılır ve dizinin yeni hali ekrana yazdırılır.

 

Sıralama algoritmalarının anlaşılması en kolay olanı Bubble Sorttur.
Bubble Sort sayı dizisindeki ilk sayıyı alır ve kendisinden sonra gelen sayıyla karşılaştırır. İkinci sayı büyükse başa alır. Küçükse değişiklik yapmaz.

Örnek : 6, 4, 8, 12, 7 sayı dizisi veriliyor ve bu sayıları büyükten küçüğe doğru sıralamamız isteniyor.

1adım : 6’yı 4 ile karşılaştırırz. 4 < 6 olduğu için sıralamada değişiklik olmaz.

2.adım : 4 ile 8 karşılaştırılır. 8 > 4 olduğundan 6, 8, 4, 12, 7 yeni sayı dizimiz olur.

3.adım : 4 ile 12 karşılaştırılır. 12 > 4 olduğundan 6, 8, 12, 4, 7 yeni sayı dizimiz olur.

4.adım : 4 ile 7 karşılaştırılır. 7 > 4 olduğundan 6, 8, 12, 7, 4 yeni sayı dizimiz olur.

5.adım : Başa dönüyoruz. 8 > 6 olduğundan 8, 6, 12, 7, 4 yeni sayı dizimiz olur.

6.adım : 12 > 6 olduğundan 8, 12, 6, 7, 4 yeni sayı dizimiz olur.

7.adım : 7 > 6 olduğundan 8, 12, 7, 6, 4 yeni sayı dizimiz olur.

8.adım : 4 < 6 olduğundan sayı dizimiz değişmez.

9.adım : Tekrar başa dönüyoruz. 12 > 8 olduğundan 12, 8, 7, 6, 4 yeni sayı dizimiz olur.

9.adımda sıralamamız sonra erer.

 

                                                       Bubble Sort C Kodu

Kaynak Kod:

#include  
int main()
{
        static int k,dizi[100],i,x,boyut,temp;
        printf(“Dizinin boyutunu giriniz :”); scanf(“%d”,&amp;boyut);
        for(i=0;i&lt;boyut;i++)
        {
              printf(“Dizinin %d. elemanini giriniz :”,i+1); scanf(“%d”,&amp;dizi[i]);
        }
        for(i=0;i&lt;boyut;i++)
        {
              printf(“%d\t”,dizi[i]);
        }
        while(x&lt;boyut)
        {
              for(i=0;i&lt;boyut1;i++)
              {
                    if(dizi[i]&lt;dizi[i+1])
                    {
                          temp=dizi[i];
                          dizi[i]=dizi[i+1];
                          dizi[i+1]=temp;
                           x=0;
                    }
                    else
                    {
                            x++;
                    }
              }
              printf(“\n\n”);
              for(k=0;k&lt;boyut;k++)
              {
                      printf(“%d\t”,dizi[k]);
              }  
        }
        return 0;
}  

 

Kod Analiz:

 

– İlk olarak kullanıcıdan dizinin boyutunu ve dizinin elemanlarını teker teker aldık.
– Daha sonra aldığımız diziyi 1 sefer ekrana yazdırdık.
– While döngüsünün içerisindeki for döngüsünde dizinin her bir elemanını bir sonraki elemanla karşılaştırıp duruma göre yer değiştirdik.
– Karşılaştırma işleminde en son olarak son eleman ve ondan bir önceki karşılaştırılacağından for döngüsü dizinin boyutunun bir eksiği kadar döner.
– Büyükten küçüğe sıraladığımızı varsayalım. Eğer baktığımız eleman bir sonraki elemandan büyükse o zaman değişme işlemi yapılmayacak ve else kısmında x değişkeni 1 artacak. Eğer değişme olursa x değişkeni 0 olacak.
– Burada dikkat edilmesi gereken yer, eğer hiç bir değişme işlemi yapılmazsa x değişkeni boyut değişkenine eşit olacak ve while döngüsünden çıkılacak.
– Yani hiç bir yer değiştirme işleminin yapılmaması demek dizi zaten sıralı halde demektir. Bu durumda dizi sıralı olduğu durumda while döngüsünden çıkılacak.

 

Ekran Görüntüsü:

C Dilinde Bubble Sort Algoritma Kodlaması

 

0
0

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir