演算法筆記:用 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 判斷式,來判斷每個數值是否在正確的順序上,當發現前一個數值比較大,就會和它交換,再換下一個數值去比對。那這個程式有個壞處就是要等迴圈做完才會停止,但有時可能到一半了時候就會完成排序,所以其實還可以加些判斷來改良這個問題。
自己本身不是資工背景,許多程式也都靠著暴力硬解,效率什麼的根本不存在,特別是最近發現自己對於許多程式觀念跟思維都不如人,程式的基礎也不是那麼的紮實,藉由這個最簡單入門的排序演算法,來當作自己學習演算法或資料結構的一個起點。