Python入門小專案-氣泡排序詳解
什麼是氣泡排序
氣泡排序的英文Bubble Sort,是一種最基礎的交換排序。
大家一定都喝過汽水,汽水中常常有許多小小的氣泡,嘩啦嘩啦飄到上面來。這是因為組成小氣泡的二氧化碳比水要輕,所以小氣泡可以一點一點向上浮動。
而我們的氣泡排序之所以叫做氣泡排序,正是因為這種排序演算法的每一個元素都可以像小氣泡一樣,根據自身大小,一點一點向著陣列的一側移動。
演算法描述
氣泡排序的基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。
演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大的資料元素放到隊尾。
程式碼實現
- 比較相鄰的元素,如果第一個比第二個大(升序),就交換他們兩個;
- 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對;
- 針對所有的元素重複以上的步驟,除了最後已經選出的元素;
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | copy # _*_ coding:utf-8 _*_ # 氣泡排序 def bubble_sort(list): n = len(list) print(f"列表的總長度為:{n}") for i in range(n - 1): print('-' * 20) print(f"當前i為:{i}") count = 0 print('*' * 20) for j in range(0, n-1-i): print(f"當前j為:{j}") print(list) # 讓列表的前一位與後一位進行對比,如果前一位大於後一位,則交換兩者的位置,當最大的以為移至佇列尾部時停止比較 if list[j] > list[j+1]: list[j], list[j+1] = list[j+1], list[j] count += 1 print(f"當前count為:{count}") if 0 == count: break if __name__ == '__main__': list = [56, 12, 1, 8, 254, 456, 10, 100, 34, 56, 7, 23, 234, -57] print(f"原列表為:{list}") bubble_sort(list) print('^' * 60) print(f"新列表為:{list}") |
最終結果為:
1 | copy 新列表為:[-57, 1, 7, 8, 10, 12, 23, 34, 56, 56, 100, 234, 254, 456] |
除開氣泡排序之外,我也整理了一份學習資料,主要包含爬蟲入門(爬蟲工作流程 http工作流程)、逆向工程、逆向演算法、非同步爬蟲、安卓逆向這幾個板塊,適合Python入門的朋友學習,都是精華,有需要的話可以新增名片領取。
相關文章
- 氣泡排序和選擇排序詳解排序
- 氣泡排序及優化詳解排序優化
- python氣泡排序Python排序
- Python 氣泡排序Python排序
- Python_氣泡排序Python排序
- 氣泡排序(python版)排序Python
- 氣泡排序與選擇排序超詳細講解排序
- 排序——氣泡排序排序
- Python實現氣泡排序Python排序
- 氣泡排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 排序之氣泡排序排序
- 排序:氣泡排序&快速排序排序
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序
- java氣泡排序Java排序
- 氣泡排序 java排序Java
- php氣泡排序PHP排序
- Java 氣泡排序Java排序
- Javascript 氣泡排序JavaScript排序
- 氣泡排序(Java)排序Java
- 容器氣泡排序排序
- 氣泡排序1排序
- 氣泡排序法排序
- 基本排序之氣泡排序排序
- 排序:交換排序——氣泡排序法排序
- Python之排序演算法:快速排序與氣泡排序Python排序演算法
- JAVA小練習氣泡排序,選擇排序和插入排序Java排序
- 氣泡排序筆記排序筆記
- js氣泡排序動畫JS排序動畫
- 陣列氣泡排序陣列排序
- 淺析氣泡排序排序
- 氣泡排序 bubble sort排序