C 氣泡排序
阿新 • • 發佈:2018-12-21
簡而言之就是往上冒泡泡
氣泡排序,顧名思義,就是相鄰的兩項不斷地比較,要是條件成熟就互換,就這樣。
//冒泡
void BubbleSort(int a[], int n){
int i, j, temp, flag = 1;
//n個數,一共跑n-1趟就好了,n-1個就拍好了,最後一個肯定是好的
for (i = 0; i < n-1; i++) {
flag = 0;
/*
這裡從後往前走,數字小的會不斷地交換到前面,肯定的是,每排一次
最前面的一定是在拍的這些數字裡最小的;排過之後,下一趟就排剩下的
好了,直到都排完。
當然如果在n-1趟之前排完之後,跳出來就好了。
*/
for (j = n-1; j > i; j--) {
if(a[j-1] > a[j]){
//只要發生交換說明這一趟還並沒有真正的有序
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
flag = 1;
}
}
//要是沒有發生交換,說明就已經有序那就OK了
if(flag == 0)
return ;
}
}
//初始值
5260391748
一次
0526139478
二次
0152634978
三次
0125364798
四次
0123546789
五次已經排完
0123456789
六次確認一次,使得falg為0,跳出來
0123456789