資料結構之氣泡排序
阿新 • • 發佈:2018-11-11
氣泡排序是一種極其簡單的排序演算法,也是我所學的第一個排序演算法。它重複地走訪過要排序的元素,依次比較相鄰兩個元素,如果他們的順序錯誤就把他們調換過來,直到沒有元素再需要交換,排序完成。這個演算法的名字由來是因為越小(或越大)的元素會經由交換慢慢“浮”到數列的頂端。
氣泡排序演算法的運作如下:
- 比較相鄰的元素,如果前一個比後一個大,就把它們兩個調換位置。
- 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
- 如下圖所示
程式碼如下:
-
#include <stdio.h> void swip(int a[],int n) { int t; for(int i=0;i<n-1;i++)//n個數的數列總共掃描n-1次 { for(int j=0;j<n-i-1;j++)//每一趟掃描到a[n-i-2]與a[n-i-1]比較為止結束 { if(a[j]>a[j+1])//後一位數比前一位數小的話,就交換兩個數的位置(升序) { t=a[j+1]; a[j+1]=a[j]; a[j]=t; } } } } int main() { int i; int a[10]={36,26,16,46,96,86,76,56,66,106};//十個數的無序數列 printf("排序後為:\n"); swip(a,10); for(i=0;i<10;i++) { printf("%d ",a[i]); } return 0; }