氣泡排序演算法的運作如下:(從後往前)
比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
針對所有的元素重複以上的步驟,除了最後乙個。
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
舉個例子:對3,6,4,7,9,1進行氣泡排序
第一次冒泡
3和6是第一對相鄰的元素,第二個數大,所以它倆位置不變,現在6和4又是一對相鄰的元素,第乙個數大,交換位置,現在變為3,4,6,7,9,1。6和7比較,不交換位置。7和9比較,不交換位置,9和1比較,交換位置,最後這組數的順序是3,4,6,7,1,9。兩兩比較的結果就是第二個數永遠是最大的,第一次冒泡結束後,最大的數就冒泡到了最前面。
第二次冒泡
3,4,6,7,1,9最右邊的數已經是最大了,我們只需要對3,4,6,7,1進行氣泡排序就可以了。排序的結果是3,4,6,1,7
第三次冒泡
對3,4,6,1進行氣泡排序。結果是3,4,1,6
第四次冒泡
對3,4,1氣泡排序。結果是3,1,4
第五次冒泡
對3,1氣泡排序。結果是1,3
五次冒泡完成後的排列順序就變為1,3,4,6,7,9,這樣我們就實現了給這組數排序的目的。
**實現:綜上所述,要實現這個功能,需要用到for迴圈巢狀,外面一層應該是冒泡的次數,裡面一層就是每次冒泡的交換迴圈。
public
class demo ;
// 進行n-1次冒泡
for (int i = 1; i <= array.length - 1; i++) }}
// 輸出array陣列
for (int i = 0; i < array.length; i++)
}}輸出結果為:134
679
我們還可以對上述演算法進行優化,如果要對2,4,6,8,7進行排序的話,第一次冒泡之後就變為2,4,6,7,8,之後的冒泡就可以省略了。因為每次冒泡交換順序的話,都是左邊的比右邊的大,如果有一次冒泡沒有數字交換順序,那麼右邊的數字一定都比左邊大,這樣排序就完成了。我們可以設定乙個標誌,來表示一次冒泡是否交換順序。
public
class demo ;
int n = array.length;
boolean flag = true;
while (flag)
}n--;
}for (int i = 0; i < array.length; i++)
}}
還有一種情況,乙個陣列有100個數字,前面10個無序,後面90個已經排好順序且都小於之前的數字,那麼我們只需要在第一次冒泡的時候確定最後發生交換的位置,這個位置一定小於10。從第二次冒泡開始,只需要對這個位置之前的數字進行排序即可。
public
class demo }}
for (int i = 0; i < a.length; i++)
}}輸出為:43210000000000000000000000000000000......
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
氣泡排序 氣泡排序演算法優化
常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...
排序演算法 氣泡排序
一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...