Bubble Sort

Kategori: C , 02 Temmuz 2019 , JanFranco


Bubble sort, sorting algoritmaları içerisindeki en basit olanıdır. Dizinin ilk elemanı alınır ve bir sonraki elemanla karşılaştırılır. Eğer ilk eleman bir sonraki elemandan büyük ise bu iki eleman yer değiştirir. Daha sonra bir sonraki eleman kontrol edilir. Bu şekilde tüm dizi taranır. Daha sonra ikinci iteration'a geçilir. Yine tekrar dizi taranır ve üçüncü iteration'a geçilir. Dizinin boyutu - 1 kadar iteration vardır. Rastgele 100 elemandan oluşan bir diziyi bubble sort ile sıralayalım:


#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 100

void bubble_sort(int arr[]){
    int i, j, temp;
    for(i=0; i<N-1; i++){
        for(j=0; j<N-1-i; j++){
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

int main() {

    int arr[N], i;
    srand(time(NULL));

    for(i=0; i<N; i++){
        arr[i] = rand() % N;
    }

    bubble_sort(arr);

    for(i=0; i<N; i++){
        printf("%d\n", arr[i]);
    }

    return 0;
}
Burada N sayısı, dizinin boyutudur. Kendiniz farklı sayılar vererek performans testi yapabilirsiniz. Her aşamayı göreceğimiz bir şekilde kodlayalım ve görelim:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define N 10

void bubble_sort(int arr[]){
    int i, j, k, temp;
    printf("Before sorting\n");
    for(i=0; i<N; i++){
        printf("%d  ", arr[i]);
    }
    for(i=0; i<N-1; i++){
        for(j=0; j<N-1-i; j++){
            if(arr[j] > arr[j+1]){
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
        printf("\n%d. iteration\n", i);
        for(k=0; k<N; k++){
            printf("%d  ", arr[k]);
        }
    }
}

int main() {

    int arr[N], i;
    srand(time(NULL));

    for(i=0; i<N; i++){
        arr[i] = rand() % N;
    }

    bubble_sort(arr);

    return 0;
}
Program çıktısı:

Before sorting
8  4  4  1  3  0  4  2  0  1
0. iteration
4  4  1  3  0  4  2  0  1  8
1. iteration
4  1  3  0  4  2  0  1  4  8
2. iteration
1  3  0  4  2  0  1  4  4  8
3. iteration
1  0  3  2  0  1  4  4  4  8
4. iteration
0  1  2  0  1  3  4  4  4  8
5. iteration
0  1  0  1  2  3  4  4  4  8
6. iteration
0  0  1  1  2  3  4  4  4  8
7. iteration
0  0  1  1  2  3  4  4  4  8
8. iteration
0  0  1  1  2  3  4  4  4  8


Sonraki Yazı: Recursive Bubble Sort
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın