1)冒泡法思想:將相鄰兩個數比較,將小的調到前頭。
排序過程:( n=10 )
(1) 比較第乙個數與第二個數,若為逆序即a[0]>a[1],則交換;然後比較第二個數與第三個數;依次類推,直至第n-1個數和第n個數比較為止——第一趟氣泡排序。
—結果:最大數放在最後1個位置–a[n-1]。
(2) 對前n-1個數進行第二趟氣泡排序:若為逆序即a[0]>a[1],則交換;然後比較第二個數與第三個數;依次類推,直至第n-2個數和第n-1個數比較為止——第二趟氣泡排序。
—結果:次大數放在第n-1個位置–a[n-2]。
(3) 對前n-2個數進行第三趟氣泡排序:若為逆序即a[0]>a[1],則交換;然後比較第二個數與第三個數;依次類推,直至第n-3個數和第n-2個數比較為止——第三趟氣泡排序。
—結果:次次大數放在第n-2個位置—a[n-3]。
…………………………………………………
重複上述過程,共經過n-1趟氣泡排序後,排序完成。
注意:外迴圈i=1—(n-1) //n-1趟冒泡
內迴圈j=0—(n-1-i) //每一趟的下標是從0 到 n-1-i
a[j]與a[j+1]比較
2 思想
#include
//氣泡排序--從小到大
#define n 10
intmain()
}for
(i =
0; i < n; i++
)//輸出排好序的資料
printf (
"%d "
, a[i]);
return0;
}3)改進方法
氣泡排序--改進(閱讀理解)
1)當一次冒泡過程中發現沒有交換操作時,表明序列已經排好序了,便終止冒泡操作。
2)標誌變數 f:標記在比較過程中是否發生了資料交換。
3)在每趟比較前(外迴圈內),把 f 置為0,如果在這趟比較過程中發生了交換,將變數 f 置為1。
4)在一趟比較結束後判斷:
如果 f 變數取值為 0,結束排序過程。
否則進行下一趟排序。
)4改進**
#include
//改進氣泡排序--從小到大
#define n 10
int main ()if
( f ==0)
break
;// 不需要再比較,排序結束
}for
(i =
0; i < n; i++
)//輸出排好資料
printf (
"%d "
, a[i]);
return0;
}
氣泡排序法改進
void bubblesort int a,int n m nfalg void bs int a,int n m nfalg printf m d n m printf 第 d次冒泡 n count 選擇排序 從無序序列裡面選乙個最大的或者最小的替換有序序列最後乙個位置 void selectso...
排序 冒泡法(改進)
排序過程 將第乙個記錄的keyword與第二個記錄的keyword進行比較,若為逆序r 1 key r 2 key,則交換 然後比較第二個記錄與第三個記錄 依次類推,直至第n 1個記錄和第n個記錄比較為止,第一趟氣泡排序,結果keyword最大的記錄被安置在最後乙個記錄上。對前n 1個記錄進行第二趟...
改進 優化 冒泡法排序
class bubblesort j static void print int mintarr i static void change refint i1,ref inti2 static void bubblesort int a,outintn 如果查詢一次後發現不需交換,說明已經排完序 可...