原理:比較兩個相鄰的元素,將值大的元素交換到右邊
思路:依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面。
列如要排序陣列[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 中 第三 依次進行...