何爲冒泡?即輕的上浮。在這裏表現爲小的數向前靠攏,大的數向後靠攏(似乎我們從後往前遍歷,更能說明問題)。
具體實現過程:
首先,假設有一個n元的數組A,索引分別0,1,2,3.,...n-1。A[n-1]與A[n-2]相比較,將較小的數放在索引爲n-2的位置上,即放在靠前的位置上,下一次,A[n-2]與A[n-3]相比較,將較小的數放在索引爲n-3的位置上,即放在靠前的位置上,如此下去,數組中的數的最小值就放在了索引爲0的位置上。有一個元素歸位了,即冒泡冒上去了。重複下去,再從n-1索引位置開始比較。
注意,冒泡排序中,所有的比較都是相鄰比較,滿足條件即可交換。
public static void bubbleSort(int[] array){
for (int i = 0; i < array.length - 1 ;i++){
for (int j = array.length-1; j > i; j--){
if (array[j-1]>array[j])
swap(array,j-1,j);
}
}
}
還是兩層循環。
注意:外層循環用了n-1次,原因是我們冒泡n-1次,可使n-1個較小的數歸位,自然第n個數也歸位了。外層循環控制每次歸位的元素的位置。
內層循環即爲從後往前冒泡所需要的比較的次數。
swap()函數同選擇排序。