排序演算法之冒泡演算法

2021-07-25 14:31:59 字數 1720 閱讀 4636

加油!加油!好好努力!

一 基本的冒泡法

氣泡排序演算法,很簡單,就是比較相鄰的數字大小,大的往後移,經過一輪(內迴圈)的比較可以把較大的數字沉到底(排到最後)。如果待排序的個數是n,則經過n-1次可以實現有序排列。

下面以: 3  2  4  1 進行氣泡排序說明

第一輪 排序過程

3  2  4  1    (最初)

2  3  4  2    (比較3和2,交換)

2  3  4  1    (比較3和4,不交換)

2  3  1  4    (比較4和1,交換)

第一輪結束,最大的數4已經在最後面,因此第二輪排序只需要對前面三個數進行再比較。

根據這個描述自己先試著寫寫,一輪的迴圈可以用for迴圈來實現。寫乙個for迴圈,用以上相鄰比較的辦法,實現把一組數字中最大的數字移動到最後。**如下:

這一輪迴圈(內迴圈)實現了把最大值最大值移到最後, 接著我們需要加一輪迴圈,來實現次大值移到倒數第二位。依次迴圈,需要進行n-1次(外迴圈)。

第二輪 排序過程

2  3  1  4 (第一輪排序結果)

2  3  1  4 (比較2和3,不交換)

2  1  3  4 (比較3和1,交換

第二輪結束,第二大的數已經排在倒數第二個位置,所以第三輪只需要比較前兩個元素。

第三輪 排序過程

2  1  3  4  (第二輪排序結果)

1  2  3  4  (比較2和1,交換)

至此,排序結束。

注意:第二輪的時候,只需要比較二次(因為最大值已經確定)。第三輪只需要比較兩次(因為倒數兩個數字置已經確定)。

這個時候,應該明白外迴圈控制迴圈的次數,n-1;內迴圈控制比較次數,n-i-1;

如果還不明白,那就自己用筆在紙上舉乙個簡單的例子,自己跑一遍。應該就沒問題了,不積跬步,無以至千里;不積小流,無以成江海。自己動手寫一遍,能深刻理解冒泡法。

二 冒泡法優化

冒泡法就是不管你資料有沒有順序,就是從頭到尾進行比較,如果在排序的中間,資料已經有序了,冒泡法還是會繼續排序的。改進的辦法就是新增標誌位,如果在某次內迴圈的過程中,資料已經有序了(內迴圈沒有交換資料),則置標誌位為0,結束迴圈。

在八種排序演算法中,冒泡法是最基本的,最簡單的排序演算法。

三 記憶冒泡法

冒泡法就是 兩個for 迴圈,然後比較相鄰的數字的大小,大的往後挪。

第乙個for迴圈是決定迴圈的次數

舉例子:3個資料是迴圈2次,4個是迴圈3次,n個數迴圈n-1次,所以,for迴圈的 i 是從 0---n-1。

第二個for迴圈決定從哪個資料到哪個資料進行比較

內迴圈執行一次,就固定乙個位置。第一次內迴圈是把最大的數字移動到最後一位。如果是4個數字,相鄰比較的方法,則比較3次。如果是n個數字,則執行n-1次,這樣就固定好最大值,第二次內迴圈時候,就不和最大值比較。這樣每次都少迴圈一次,所以內迴圈的次數  j 是從0---n-i-1次。

演算法 排序演算法之氣泡排序

排序演算法系列目錄說明 排序演算法簡介說明 1.定義 將一組雜亂無章的資料按一定的規律順次排列起來。例如 輸入 a1,a2,a3,an 輸出 a1 a2 a3 an 滿足a1 a2 a3 an 排列 2.演算法效能評估術語言 穩定 如果a原本在b前面,而a b時,排序之後a仍然在b的前面。不穩定 如...

演算法 排序演算法之氣泡排序

氣泡排序 bubble sort 也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。作為最簡單...

排序演算法之冒泡演算法

冒泡演算法是一種簡單的 排序演算法 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。function bubblesort...