八大排序——氣泡排序
阿新 • • 發佈:2018-12-09
氣泡排序
氣泡排序圖示:
這是一次氣泡排序的過程,詳細來說氣泡排序的過程為:
1.比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
3.針對所有的元素重複以上的步驟,除了最後一個。
4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
程式碼:
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> #include<math.h> #include<malloc.h> void swap(int *a,int *b) { int c; c=*b; *b=*a; *a=c; } void BubbleSort(int *s,int len) { int i=0; int j=0; for(i=0;i<len-1;i++) { int flag=0; for(j=0;j<len-i-1;j++) { if(s[j]>s[j+1]) { swap(&s[j],&s[j+1]); flag=1; } } if(flag==0) { return; } } } void Print(int *s,int len) { int i; for(i=0;i<len;i++) { printf("%d ",s[i]); } printf("\n"); } int main() { int s[]={25,78,58,99,105,254,763,365,47,33,10,87}; int len=sizeof(s)/sizeof(s[0]); BubbleSort(s,len); Print(s,len); return 0; }
執行結果: