C ile bir diziyi sıralamak
Bir diziyi sıralamak için çeşitli yöntemler vardır. Bunlardan “Kabarcık Sıralama” (Bubble Sort) algoritmasını kullanarak bir dizinin nasıl sıralanabileceğini görelim:
#include<stdio.h>void sirala(int *dizi,int u){
int i,k,g;
for(i=0;i<u;i++){
for(k=i;k<u;k++){
if(dizi[k]<dizi[i]){
g=dizi[k]; //yer değiştir
dizi[k]=dizi[i];
dizi[i]=g;
}
}
}
}int main(){
int k,dizi[10];
printf(“Merhaba! 10 tane sayi girin ve biz de siralayalim\n”);
for(k=0; k<10; k++){
printf(“%d. sayiyi girin: “,k+1);
scanf(” %d”,&dizi[k]);
}
sirala(dizi,10);
printf(“Dizinin sirali hali\n”);
for(k=0; k<10; k++) printf(“%d\n”,dizi[k]);
getch();
return 0;
}
Kabarcık sıralama en basit ve en kötü algoritmalardan biridir. Eğer yujarıdaki örnekte 10 yerine 1000 sayı koysaydınız sıralama yaklaşık 5000 kat daha uzun sürecekti. Ama basit işlerde kullanabilirsiniz. Yaptığı şey dizinin her üyesini teker teker diğerleriyle karşılaştırmak ve eğer daha küçüğüyle karşılaşılırsa ikisinin yerini değiştirmek.
Kasım 24, 2010 4:47 pm
Bi ara sana stdlib.h daki qsort() fonksiyonunu anlatayım x kişisi. Bunu yazmandan daha kolay.
Örneğinde 10 yerine 1000 sayi girersen 100000 kat yavaşlıyo.
quick sortta ise 300 kat yavaşlıyo.
Kasım 27, 2010 6:54 pm
Halil kırk yılda bir blogumu okuyorsun onda da eziyorsun bu ne iştir yahu. Onu bırak da senin sınavın nasıl geçti. Madalya alabilir misin?
Kasım 24, 2010 4:48 pm
Pardon 10000 bi sıfır fazla kaçmış