C Programlama Dili Düzenlenmiş Bubble Sort (Modified Bubble Sort) (Sıralama Algoritmaları)
C Programlama Dili Düzenlenmiş Bubble Sort (Modified Bubble Sort)
C programlama dili düzenlenmiş bubble sort ile sıralama işlemi yapabilirsiniz. Modified Bubble Sort ile sıralama işleminizi Bubble Sort’a göre daha performanslı bir şekilde yapabilirsiniz. Yan yana elemanları karşılaştırarak yer değiştirme yaptığımız algoritmayı 2 for yerine 1 while 1 for döngüsü ile yapıyoruz. for döngüsünde bir değişiklik olmadığında while döngüsüne tekrar girmeyeceğinden daha performanslı sıralama yapabilirsiniz. Az elemanı olan liste de performans fazla belli olmasa da büyük listelerde daha performanslı sıralama yapabilirsiniz. Çok performans gerektiren işlerde de iş yapacaksanız zaten Bubble Sort ile işiniz olmayacaktır.
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 |
#include <stdio.h> void duzenlenmisBubbleSort(int[]); void ekranaYazdir(int[]); int limit; int main() { int sayilar[] = {1, 242, -99, 0, 44, 2, 33, 83, 11, -2, -33, 2, 112, 884, -82}; limit = sizeof (sayilar) / sizeof (sayilar[0]); printf("Dizinin ilk hali\n"); ekranaYazdir(sayilar); duzenlenmisBubbleSort(sayilar); return 0; } void duzenlenmisBubbleSort(int sayilar[]) { int adet = limit; int i, gecici, degisiklik = 0; while (degisiklik == 0) { degisiklik = 1; for (i = 0; i < adet - 1; i++) { if (sayilar[i] > sayilar[i + 1]) { gecici = sayilar[i]; sayilar[i] = sayilar[i + 1]; sayilar[i + 1] = gecici; degisiklik = 0; } } adet--; } printf("\nDizinin siralanmis hali\n"); ekranaYazdir(sayilar); } void ekranaYazdir(int numbers[]) { for (int i = 0; i < limit; i++) printf("%d ", numbers[i]); } |
Çıktı:
1 2 3 4 |
Dizinin ilk hali 1 242 -99 0 44 2 33 83 11 -2 -33 2 112 884 -82 Dizinin siralanmis hali -99 -82 -33 -2 0 1 2 2 11 33 44 83 112 242 884 |
- ekranaYazdir fonksiyonu ile diziyi ekrana yazdırıyoruz.
- duzenlenmişBubbleSort fonksiyonu ile diziyi küçükten büyüğe sıralayıp tekrar ekranaYazdir fonsiyonunu çağırarak ekrana yazdırıyoruz.
Leave a reply
Lütfen yorum için giriş yap ve yakayıt ol Teşekkürler .