Python排序演算法(二) 氣泡排序

2021-09-25 10:15:11 字數 1349 閱讀 3095

有趣的事,python永遠不會缺席!

如需**,請註明出處:小婷兒的python 

氣泡排序(bubble sort),是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,一層一層的將較大的元素往後移動,其現象和氣泡在上公升過程中慢慢變大類似,故成為氣泡排序

舉個例子,假設我現在有乙個數列需要使用冒泡來排序 [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22],我們來看看使用冒泡的詳細步驟:

比較完後,列表為  [11, 33 , 69, 77, 55, 11, 33, 36,39, 66, 44, 22, , 88,99]

**用jupyternotebook實現

實現思路: 使用雙重for迴圈,內層變數為i, 外層為j,在內層迴圈中不斷的比較相鄰的兩個值(j, j+1)的大小,如果j+1的值大於j的值,交換兩者位置,每迴圈一次,外層的i增加1,等到i等於(len(arr) - 1)的時候,結束迴圈

第一次看不懂很正常,不要灰心,下面是使用**的實現

1

defbubble_sort(arr):

2"""

氣泡排序

"""3

#第一層for表示迴圈的遍數

4for i in range(len(arr) - 1):5#

第二層for表示具體比較哪兩個元素

6for j in range(len(arr) - 1 -i):

7if arr[j] > arr[j + 1]:8#

如果前面的大於後面的,則交換這兩個元素的位置

9 arr[j], arr[j + 1] = arr[j + 1], arr[j]

10return

arr11

12 bubble_sort([11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22])13#

返回結果 [11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99]

氣泡排序是一種簡單直接暴力的排序演算法,為什麼說它暴力?因為每一輪比較可能多個元素移動位置,而元素位置的互換是需要消耗資源的,所以這是一種偏慢的排序演算法,僅適用於對於含有較少元素的數列進行排序。

successfully !!!

有趣的事,python永遠不會缺席!還不來加我,瞅什麼瞅。

Python排序演算法(二) 氣泡排序

有趣的事,python永遠不會缺席!如需 請註明出處 小婷兒的python 氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,一層一層的將較大的元素往後移動,其現象和氣泡在上公升過程中慢慢變大類似,故成為氣泡排序。舉個例子...

python排序演算法 二 氣泡排序演算法

實現方法二 實現方法三 測試與對比 氣泡排序複雜度分析 對順序表 data 作交換排序 氣泡排序初級版 這段 嚴格意義上說,不算是標準的氣泡排序演算法,因為它不滿足 兩兩比較 相鄰記錄 的氣泡排序思想,它更應該是最最簡單的交換排序而已。它的思路就是讓 每乙個關鍵字,都和它後面的每乙個關鍵字比較,如果...

排序演算法(二) 氣泡排序

每一趟排序 例如第 i 趟,其中 i 0,1,n 2 依次比較相鄰兩個資料元素,如果發生逆序,則交換之 待排資料的最大值 沉 到待排資料的最底部,比如 i 0 時,為第 1 趟排序,資料元素最大者將被交換到最後乙個位置 i 1 時,為第 2 趟排序,資料元素次大者將被交換到最後第二個位置 直至全部待...