述說氣泡排序

2022-10-07 22:33:23 字數 1205 閱讀 5290

時隔許久,重溫氣泡排序,還是打算記錄下。

氣泡排序重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果順序(如從大到小、首字母從z到a)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素列已經排序完成。

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

對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。一輪排序下來後,最後的元素會是最大的數。

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

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

假設有一組資料,在排序前的順序為:[86, 54, 87, 21, 3]。那麼完整的排序過程如下:

第一輪排序

54,86,87,21,3

54,86,87,21,3

54,86,21,87,3

54,86,21,3,87

經過第一輪排序,最大的數87已經沉到最底部。

第二輪排序

54,86,21,3,87

54,21,86,3,87

54,21,3,86,87

經過第二輪排序,第二大的數86也沉到了底部。

第三輪排序

21,54,3,86,87

21,3,54,86,87

第四輪排序

3,21,54,86,87

至此,經過四輪排序,原陣列已實現公升序排序。

根據分解過程,會發現,每經過一輪排序,交換的次數就會減少一次。排序的次數又恰好是陣列長度 - 1

根據上面的分析可以得出如下規律

所需排序次數 = 元素個數 - 1

每次排序需要交換的次數 = 元素個數 - 當前排序的輪數

因為需要多次處理,肯定要使用到迴圈結構。剩下要考慮的就是判斷誰是外層迴圈,誰是內層迴圈。

根據規律可知,先需要推斷出排序次數,才能推斷出每次排序時所需要交換的次數,故排序次數迴圈為外層迴圈,而交換次數迴圈為內層迴圈。

由此,可得到如下**:

vectorbubblesort(vector& arr) }}

return arr;

}

氣泡排序 排序 氣泡排序

既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...

氣泡排序 氣泡排序法

冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...

選擇排序,氣泡排序,雙向氣泡排序

氣泡排序和選擇排序是最基本的排序方式,要掌握。氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。選擇排序每一趟從待排序的 資料元素 中選出最小 或最大 的乙個元素,順序放在已排好序的數列的...