C語言:冒泡排序,經典的排序算法

在程序中處理數據時,為了提高抗干擾性、過濾掉干擾數據,我們通常會加入濾波算法,而冒泡排序是最經典、通用、易懂的算法。

C語言:冒泡排序,經典的排序算法

1. 算法思想簡單描述

冒泡排序要遍歷每一個所要排列的數據,並且進行兩兩比較,如果順序不對就要對其進行換位,直到排序完成。第一趟:首先比較第1個和第2個數,將小數放前面,大數放後面。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完成。

想象一下:最小的數據元素,就像氣泡一樣慢慢的從底端“浮”到頂端。

2. 算法的簡單演示

舉例說明:要排序數組矩陣:int[] arr={8,6,9,2};

第一趟排序:

  1. 第1次排序:8和6比較,8大於6,交換位置: 6 8 9 2
  2. 第2次排序:8和9比較,8小於9,不換位置: 8 6 9 2
  3. 第3次排序:9和2比較,2小於9,交換位置: 8 6 2 9

第一趟總共進行了3次比較, 排序結果:8 6 2 9

---------------------------------------------------------------------

第二趟排序:

  1. 第1次排序:8和6比較,8大於6,交換位置:6 8 2 9
  2. 第2次排序:8和2比較,8大於2,交換位置:6 2 8 9

第二趟總共進行了2次比較, 排序結果:6 2 8 9

---------------------------------------------------------------------

第三趟排序:

  1. 第1次排序:6和2比較,6大於2,交換位置:2 6 8 9

第三趟總共進行了1次比較, 排序結果:2 6 8 9

---------------------------------------------------------------------

最終結果:2 6 8 9

---------------------------------------------------------------------

由此可見:N個數字要排序完成,總共進行N-1趟排序,每i趟的排序次數為(N-i)次,所以可以用雙重循環語句,外層控制循環多少趟,內層控制每一趟的循環次數:

for(int i=0;i

for(int j=0;j

//省略交換代碼

}

3. 算法代碼展示

void Sort() {

int i,j,temp;

for ( i = 0; i < N - 1; i++) {

for ( j = 0; j < N - 1 - i; j++) {

if (arr[j] > arr[j+1]) { // 相鄰元素兩兩對比

temp = arr[j+1]; // 元素交換

arr[j+1] = arr[j];

arr[j] = temp;

}}}}

C語言:冒泡排序,經典的排序算法

更多精彩內容請關注頭條號 玩轉嵌入式

點擊“瞭解更多”可以找我一起幹大事。


分享到:


相關文章: