iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
0
Software Development

從零開始的Python練成記系列 第 11

[Day 11]小型題材:Bubble Sort in Python

  • 分享至 

  • xImage
  •  

何謂Bubble Sort(氣泡排序法),就是當有一系列相同屬性的資料且未經整理時(假設共有n項),會從第1項開始逐一進行前後項比較,而且每次進行不只一次交換,交換時只會進行前後對調,而在比完第(n-1)項與第n項時會再回頭至第1項重新執行,直到排序完成為止,就先舉一個例子:

預設資料(採用整數資料)[1,29,17,3,22]
第一次交換後: [1,17,3,22,29] >>>原本存放於第二個位置的29因為比後面其他項都還要大,所以就逐步交換至最後
第二次交換後: [1,3,17,22,29] >>>被交換至第二位的17因為比3大,所以交換到第三位,但因為後面的數字都比較大就沒有再進行交換

接下來就是實際的程式碼:

sample_data = [1,29,17,3,22]
def bubble_sort(lst):
    #宣告一個方法來執行今天的主軸,Bubble Sort
    for x in range(0,len(lst)-1):
        booleaner = False
        for y in range(0,len(lst)-1):
            if lst[y] > lst[y+1]:
                tmp = lst[y]
                lst[y] = lst[y+1]
                lst[y+1] = tmp
                booleaner = True
        if booleaner == True:
            #這條其實只是為了方便進行檢視交換情況而讓系統輸出
            print("The " + str(x+1) + " time of exchange: " + str(lst))
        else:
            continue
    print("Final result: " + str(lst))
bubble_sort(sample_data)

執行結果如下:

The 1 time of exchange: [1, 17, 3, 22, 29]
The 2 time of exchange: [1, 3, 17, 22, 29]
Final result: [1, 3, 17, 22, 29]

晚安desu


上一篇
[Day 10]一次堆放多筆資料的陣列還可以這樣用?!
下一篇
[Day 12]小型題材:Game "1A2B" in Python
系列文
從零開始的Python練成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言