氣泡排序演算法

2021-09-30 12:45:49 字數 1606 閱讀 9304

氣泡排序演算法的運作如下:(從後往前)

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

舉個例子:對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個中最...