1 . 什麼是氣泡排序?
網上查了點資料,也沒有找到什麼有用的概念,大致的意思都是 相鄰的兩個數兩兩做比較。根據相應的規則(比較大的往後放或比較小的往後放)放置兩數的位置:
規則:大的數往後靠
比較前: 2,1
比較後: 1,2
2 . 實戰
假設有這樣乙個陣列
int arr =
氣泡排序是這樣排的:
規則:小的往後靠
拿第乙個數開始與其後面的做比較。
第一次比較:
2<5
true 所以 2 和 5 的位置變換
現在 arr是這樣的
int arr =
2<1
false 所以 2 和 1 的位置不變
int arr =
由於剛才的位置未放生變化,那就拿1與其後面的數繼續比較
1<4
true 所以 1 和 4 的位置變換
現在 arr是這樣的
int arr =
1<3
true 所以 1 和 3 的位置變換
現在 arr是這樣的
int arr =
1<6
true 所以 1 和 6 的位置變換
現在 arr是這樣的
int arr =
一共是比較了5次。
這樣第1次比較就完了,最終將最小值1確定到了最後1位,不需要再做比較。
接著進行第二次比較:
與剛才類似:依然是拿第乙個數「5」與其後的數做比較。由於數字1已確定為最小,所以不用比較。這樣就只需要比較4次。
比完後是這樣的:
int arr =
依次類推:第3次比較比3次,結果是這樣的
int arr =
接著就是這樣的:
第4次比2次 int arr =
第5次比1次 int arr =
陣列 arr 的長度是6.
一共是比了5次,而每次比較中兩兩之比的次數又是遞減的。
因此可以得出以下圖示:
外迴圈內迴圈
第1次比較
比了5次
第2次比較
比了4次
第3次比較
比了3次
第4次比較
比了2次
第5次比較
比了1次
3 . **
這氣泡排序是不是就這樣出來了?
就拿剛剛的陣列為例子:
首先: 一共需要比較多少次:
for(int i=0;i
length-1;i++){}
一次比較裡面兩兩相比需要多少次:
for(int j =0;j
length-1-i;j++){}
如果arr[j]上的值小於arr[j+1]上的值就變換位置
if(arr[j]
[j+1])
最終氣泡排序的**為:
for(int i=0;ilength-1;i++)
}
}
補張圖:
結束,收工。
java排序之氣泡排序
假設一籃球隊,成一佇列排列在籃球場上,每個人的身高都不相同,這樣的話就會成下面這種 現在呢,要對他們以身高進行排列讓他們成下面這種情況 採用氣泡排序的方式歷程如下 熊佇列的最左邊第一位 簡稱左一 起,讓他與最左邊第二位 左二 進行比較,如果左一的身高高於左二,那麼讓左一與左二調換位置 接下來對比左二...
Java之氣泡排序
氣泡排序,從字面上理解,冒泡的話,可以想象魚在水裡吐泡泡,越接近水面的泡泡越大,越遠離水面的泡泡越小,那麼氣泡排序也就是乙個種從小到大的排序。氣泡排序的原理 比較相鄰的兩個數,將值大的交換值右端 每次都比較相鄰的兩個數,在第一輪之後,最大的值就到了最右端,那麼第二輪就可以少一次比較,因為在第一輪最大...
Java之氣泡排序
直接上傳氣泡排序 public class sort bubblesort array for object obj array public static void bubblesort int array 時間複雜度 平均情況o n 2 最好情況o n 最壞情況o n 2 空間複雜度 o 1 穩...