氣泡排序的原理和實操

2021-10-19 17:29:56 字數 1603 閱讀 9626

原理:比較兩個相鄰的元素,將值大的元素交換到右邊

思路:依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。

列如要排序陣列[10,5,3,5,8,2,1,0]

第一回:10和5比較 10>5 交換位置後陣列後[5,10,3,5,8,2,1,0],將交換後的10繼續與右邊的3進行對比 10>3 交換位置後陣列為[5,3,10,5,8,2,1,0]…依次對比…………最終比較交換位置後的陣列為[5,3,5,8,2,1,0,10]

第二回:將第一次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[3,5,5,2,1,0,8,10]

第三回:將第二次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[3,5,2,1,0,5,8,10]

第四回:將第三次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[3,2,1,0,5,5,8,10]

第五回:將第四次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[2,1,0,3,5,5,8,10]

第六回:將第五次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[1,0,2,3,5,5,8,10]

第七回:將第五次得到的陣列按照繼續依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面 得到陣列[0,1,2,3,5,5,8,10]

通過觀察以上示列可以得出:

第一回排序 進行了7次排序

第二回排序 進行了6次排序

第三回排序 進行了5次排序

第四回排序 進行了4次排序

第五回排序 進行了3次排序

第六回排序 進行了2次排序

第7回排序 進行了1次排序

由此可見:

n個數字要排序完成,總共進行n-1回排序,每趟(i)的排序次數為(n-i)次,所以可以用雙重迴圈語句,外層控制迴圈多少趟,內層控制每一趟的迴圈次數(注意i=0)

氣泡排序每進行一回排序就會少一次比較,每一回排序都會比較出乙個最大的值。

/**

* @describe:

* @author: 李季林

* @date: 2021/2/21 9:44

*/public

class

bubble

//外層迴圈用於控制需要排序多少回

for(

int i =

0; i < arry.length-

1; i++)}

}//迴圈列印輸出

for(

int i : arry)

}public

static

void

main

(string[

] args)

;sort

(arry);}

}

測試輸出結果

氣泡排序的原理

package com.zheban.test 陣列公升序 author king public class test1 排序前的陣列列印 print arr1 氣泡排序 sort02 arr1 排序後的陣列列印 print arr1 列印功能 返回值 無 引數列表 arr1 static void...

氣泡排序原理

原理 比較兩個相鄰的元素,將值大的元素交換至右端。思路 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。重複第一趟步驟,直至全部排序完...

冒泡法排序原理

第一 在a 0 到a n 1 的範圍內,依次比較兩個相鄰元素的值 若a j a j 1 則交換與,j的值取0,1,2.n 2 經過 這樣一趟冒泡,就把這n個數中最大的數放到a n 1 中 第二 再對a 0 到a n 2 的範圍內再進行一趟冒泡,又將該範 圍內的最大值換到a n 2 中 第三 依次進行...