C/C++

演算法筆記:用 C 語言實作泡沫排序法

泡沫排序法

泡沫排序法(Bubble Sort)是一種簡單排序演算法,也是最容易實作的演算法,核心思想就是比對相鄰的元素,若是順序不對,就將其位置對換過來,反之,如果順序正確就直接換下一組元素,重複這個步驟,直到所有元素都在正確位置上,才會停止排序。



C 語言實作泡沫排序演算法

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

void bubble(int a[], int size);

int main(void){

    int arr[] = {5,8,4,9,7};
    int size = (int) sizeof(arr) / sizeof(*arr);

    bubble(arr, size);
    for(int i=0; i<size; i++){
        printf("%d", arr[i]);
    }

    return 0;
}

void bubble(int a[], int size){

    int i, j, temp;

    for(i=0; i<size; i++){
        for(j=0; j<(size-1); j++){
            if(a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
            }
        }
    }

}

這支程式最主要的重點,就是用 for 迴圈跟 if 判斷式,來判斷每個數值是否在正確的順序上,當發現前一個數值比較大,就會和它交換,再換下一個數值去比對。那這個程式有個壞處就是要等迴圈做完才會停止,但有時可能到一半了時候就會完成排序,所以其實還可以加些判斷來改良這個問題。

自己本身不是資工背景,許多程式也都靠著暴力硬解,效率什麼的根本不存在,特別是最近發現自己對於許多程式觀念跟思維都不如人,程式的基礎也不是那麼的紮實,藉由這個最簡單入門的排序演算法,來當作自己學習演算法或資料結構的一個起點。

參考

留下一個回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *