lostyazilim
tr.link

C Dilinde Bubble Sort Algoritma Kodlaması

5 Mesajlar 1.194 Okunma
acebozum
tr.link

ennrh ennrh WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 451
  • Beğeniler 38 / 78
  • Ticaret 7, (%100)
C Dilinde Bubble Sort Algoritma Kodlaması

Sıralama algoritmaları serimizde bubble sort, Türkçesiyle kabarcık sıralamasını anlatmıştık. Bu dersimizde bubble sort algoritmasının c dilinde kodlamasını yapacağız. Bubble sort algoritmasını detaylı olarak öğrenmek ve bubble sort algoritması akış diyagramı için buraya tıklayın.

Başlamadan önce bubble sort algoritmasını kısaca bir hatırlatalım. Bubble sort algoritmasında ardışık elemanları kendi aralarında karşılaştırıp istenilen duruma göre büyükten küçüğe yada küçükten büyüğe olacak şekilde sıralanır. Bu işlem dizinin bütün elemanları sıralı olana kadar devam eder.

Bubble sort algorimasının c dilinde birden fazla kodlaması olabilir. Bubble sort algoritmasını ayrıntılı olarak anlattığımız derste söylediğimiz gibi, tamamen sıralı bir dizi elde edebilmek için en az bir en fazla dizinin eleman sayısının bir eksiği kadar yukarıda anlattığımız işlem bütün dizi için tekrarlanmalıdır. Bubble sort algoritmasının birden fazla c kodlaması olabilmesi buradan gelir. Bubble sort algoritmasının c dilinde 2 farklı şekilde kodlamasını gösterelim.

Bubble Sort C Kodu

Kaynak Kod:

#include

int main()
{
static int k,dizi[100],i,x,boyut,temp;
printf("Dizinin boyutunu giriniz :"); scanf("%d",&boyut);
for(i=0;i {
printf("Dizinin %d. elemanini giriniz :",i+1); scanf("%d",&dizi[i]);
}
for(i=0;i {
printf("%d\t",dizi[i]);
}
while(x {
for(i=0;i {
if(dizi[i] {
temp=dizi[i];
dizi[i]=dizi[i+1];
dizi[i+1]=temp;
x=0;
}
else
{
x++;
}
}
printf("\n\n");
for(k=0;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ü:



Resimde de gördüğümüz gibi 5 elemanlı dizide 3. for döngüsünden sonra döngü durmuş ve dizi sıralı hale ulaşmıştır. Dizinin 3. kez ekrana yazımında dizide son değişiklik yapılmıştır. 4. yazımında ise artık bir önceki ile fark olmayınca program durdu.

Yukarıdaki kodlamada karşılaştırma yaptığımız for döngüsü en fazla dizinin eleman sayısının bir eksiği kadar gerçekleşir. Yani for döngüsü eleman sayısının bir azı kere döndüğünde dizi kesinlikle sıralı halde olmalıdır.

Fakat kullandığımız while döngüsü sayesinde dizi sıralı olduğu anda program durmuş ve fazladan işlemleri engellemiştir. Şimdi ise bubble sort algoritmasının başka bir c kodlamasını beraber inceleyelim. Bu sefer while döngüsü kullanmadan eleman sayısı -3 kadar for döngüsü dönsün ve sıralı diziyi elde edelim.

Bubble Sort C Kodu 2

Kaynak Kod:

#include

int main()
{
static int k,dizi[100],i,x,boyut,temp,j;
printf("Dizinin boyutunu giriniz :"); scanf("%d",&boyut);
for(i=0;i {
printf("Dizinin %d. elemanini giriniz :",i+1); scanf("%d",&dizi[i]);
}
printf("Girdiginiz dizi : ");
for(i=0;i {
printf("%d\t",dizi[i]);
}
for(i=0;i {
for(j=1;j {
if(dizi[i] {
temp=dizi[i];
dizi[i]=dizi[i+1];
dizi[i+1]=temp;
}
}
printf("\n\n");
for(k=0;k {
printf("%d\t",dizi[k]);
}
}
return 0;
}

Kod Analiz:

- Yukarıdaki kodun ilk koddan farkı while döngüsü yerine bir for döngüsü fazladan kullandık.
- Bunun sebebi yukarıda da anlattığımız gibi program eleman sayısının bir eksiği kadar dönüp dizi sıralı hale gelecektir.
- Bunun haricinde diğer kısımların analizi yukarıdaki analizin aynısıdır.
- Aşağıdaki ekran görüntüsünde de gördüğünüz gibi dizi sıralı olmasına rağmen ekrana 1 kere daha yazılmıştır.

Ekran Görüntüsü:



C dili dersleri serisinin bu dersinde c programlama dilinde bubble sort yani kabarcık sıralaması algoritmasının c dilindeki kodlamasının 2 farklı örneğini sizlerle paylaştık.

Ayrıca "C Dilinde İnsertion Sort Algoritma Kodlaması" için buraya tıklayınız.

"C Dilinde Bubble Sort Algoritma Kodlaması" adlı bu makaleyi beğendiyseniz lütfen yorum yapmayı ve paylaşmayı unutmayın.

Kaynak: Pubtekno
ttekno

kişi bu mesajı beğendi.

http://www.pubtekno.com
elektronikssl
webimgo

ozgurgezen ozgurgezen WM Aracı Kullanıcı
  • Üyelik 17.03.2016
  • Yaş/Cinsiyet 43 / E
  • Meslek Bilgisayar Muhendisi
  • Konum İstanbul Anadolu
  • Ad Soyad Ö** H**
  • Mesajlar 702
  • Beğeniler 224 / 225
  • Ticaret 16, (%100)
Merhaba,
Labirent olusturma algoritmalari ile ugrastin mi hic?
Hem benim algoritmaya ihtiyacim var hem de senin ufak bi egzersiz yapman icin bir algoritma istegim olacak. Ilginenir misin?
 

 

ennrh ennrh WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 451
  • Beğeniler 38 / 78
  • Ticaret 7, (%100)
Hocam şu 2 hafta sınav dönemindeyim ve proje ödevlerim de var ama siz yinede özel mesaj olarak atın eğer fazla uğraştırmayacak gibiyse size hemen geri dönüş yaparım. Uzun olursa algoritması sınavlarımdan sonra eğer hala yardıma ihtiyacınız varsa yardım ederim seve seve.
 

 

http://www.pubtekno.com

ozgurgezen ozgurgezen WM Aracı Kullanıcı
  • Üyelik 17.03.2016
  • Yaş/Cinsiyet 43 / E
  • Meslek Bilgisayar Muhendisi
  • Konum İstanbul Anadolu
  • Ad Soyad Ö** H**
  • Mesajlar 702
  • Beğeniler 224 / 225
  • Ticaret 16, (%100)
Merhaba,
Sinavlarinda basarilar.
Bu algoritmaya oyle ahim sahim ihtiyacim yok ( google da arama ile de bulunur), o sekilde olsa idi bir ara vakit ayirir yazardim.
Baska bir forumda fikir olarak gordum, hosuma gitti paylasayim dedim.
 

 

wmaraci
wmaraci

ennrh ennrh WM Aracı Kullanıcı
  • Üyelik 16.03.2016
  • Yaş/Cinsiyet 28 / E
  • Meslek öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad E** K**
  • Mesajlar 451
  • Beğeniler 38 / 78
  • Ticaret 7, (%100)
Tamam hocam. Kolay gelsin size.
 

 

http://www.pubtekno.com
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al