1. 程式人生 > >python氣泡排序演算法

python氣泡排序演算法

氣泡排序

氣泡排序:暫且規定:排序好的順序是從小到大。 顧名思義,冒泡冒泡,就像燒水一樣,剛開始涼水的時候,看著很平靜, 當燒到一定溫度後,就會有小水泡從下邊冒上來。 氣泡排序演算法就是根據兩兩比較,如果這個數比和它比較的數大,那麼他倆交換位置, 繼續和下一個數比較,直到最後位置。

第一輪比較: 第一次比較:33和2比較, 交換位置:2,33,12,34,22,56,32,45,43 第二次比較:33和12比較,交換位置:2,12,33,34,22,56,32,45,43 第三次比較:33和34比較:位置不變 第四次比較:34和22比較:交換位置:2,12,33,22,34,56,32,45,43 第五次比較:34和56比較:位置不變 第六次比較:56和32比較:交換位置:2,12,33,22,34,32,56,45,43 第七次比較:56和45比較:交換位置:2,12,33,22,34,32,45,56,43 第八次比較:56和43比較:交換位置:2,12,33,22,34,32,45,43,56 第二輪比較: 重複第一輪的過程,還是從第一個開始,即2和12 比較。。。。 氣泡排序

lst = [33,2,12,34,22,56,32,45,43]  # 假如有如亂序列表

for i in range(len(lst)-1):   # 有多少個數比較多少輪
    print("============================")
    print("第",(i+1),"輪:")
    print("============================")
    for j in range(len(lst)-i-1):  # 已經冒泡的不再比較,即最後一輪只比較一次
        if lst[j]>lst[j+1]:  # 每次緊挨著的兩個比較
lst[j],lst[j+1] = lst[j+1],lst[j] # 交換位置 print("第",(j+1),"次:",lst) print("最後結果:",lst)

列印結果:

============================
第 1 輪:
============================
第 1 次: [2, 33, 12, 34, 22, 56, 32, 45, 43]
第 2 次: [2, 12, 33, 34, 22, 56, 32, 45, 43]
第 3 次: [2, 12, 33, 34, 22, 56, 32, 45, 43]
第 4 次: [2, 12, 33, 22, 34, 56, 32, 45, 43]
第 5 次: [2, 12, 33, 22, 34, 56, 32, 45, 43]
第 6 次: [2, 12, 33, 22, 34, 32, 56, 45, 43]
第 7 次: [2, 12, 33, 22, 34, 32, 45, 56, 43]
第 8 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
============================
第 2 輪:
============================
第 1 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
第 2 次: [2, 12, 33, 22, 34, 32, 45, 43, 56]
第 3 次: [2, 12, 22, 33, 34, 32, 45, 43, 56]
第 4 次: [2, 12, 22, 33, 34, 32, 45, 43, 56]
第 5 次: [2, 12, 22, 33, 32, 34, 45, 43, 56]
第 6 次: [2, 12, 22, 33, 32, 34, 45, 43, 56]
第 7 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
============================
第 3 輪:
============================
第 1 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 33, 32, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 5 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 6 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 4 輪:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 5 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 5 輪:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 4 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 6 輪:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 3 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 7 輪:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
第 2 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]
============================
第 8 輪:
============================
第 1 次: [2, 12, 22, 32, 33, 34, 43, 45, 56]


最後結果: [2, 12, 22, 32, 33, 34, 43, 45, 56]

其實可以看出來在第三輪第4次比較就已經成功排好序了,卻還在往下比較,這就是氣泡排序,效率不高,但卻是最簡單的也是最好理解的排序演算法,下一篇說快速排序,一種比較快的排序演算法。