氣泡排序法 - 使用Python (Bubble Sort)

 

插入排序法的原理是,從未排序的數列裡挑一個值(通常從最後一個開始),並將相鄰的值做比較,如數值大小與排序不符,則兩者對調,並繼續往下一個進行比較(這邊特別的是,如果大小順序是正確的,則會拿小的那一個值繼續往下比較),直到所有的值都比較且排序完成,下面直接用每個步驟氣泡排序法做的事情來讓大家瞭解

原始數列 = [6, 5, 4, 3, 2, 1]  刷紫色是已排序的值,刷紅色是本次要比較的值。

第 1 次要排序的陣列  =  [6, 5, 4, 3, 2, 1],本次要比較的值 = 1
  sourceBubbleSortList = [6, 5, 4, 3, 2, 1]
  sourceBubbleSortList = [6, 5, 4, 3, 1, 2]
  sourceBubbleSortList = [6, 5, 4, 1, 3, 2]
  sourceBubbleSortList = [6, 5, 1, 4, 3, 2]
  sourceBubbleSortList = [6, 1, 5, 4, 3, 2]
第 2 次要排序的陣列  =  [1, 6, 5, 4, 3,
2],本次要比較的值 = 2
  sourceBubbleSortList = [1, 6, 5, 4, 3, 2]
  sourceBubbleSortList = [1, 6, 5, 4, 2, 3]
  sourceBubbleSortList = [1, 6, 5, 2, 4, 3]
  sourceBubbleSortList = [1, 6, 2, 5, 4, 3]
第 3 次要排序的陣列  =  [1, 2, 6, 5, 4, 3],本次要比較的值 = 3
  sourceBubbleSortList = [1, 2, 6, 5, 4, 3]
  sourceBubbleSortList = [1, 2, 6, 5, 3, 4]
  sourceBubbleSortList = [1, 2, 6, 3, 5, 4]
第 4 次要排序的陣列  =  [1, 2, 3, 6, 5, 4],本次要比較的值 = 4
  sourceBubbleSortList = [1, 2, 3, 6, 5, 4]
  sourceBubbleSortList = [1, 2, 3, 6, 4, 5]
第 5 次要排序的陣列  =  [1, 2, 3, 4, 6, 5],本次要比較的值 = 5
  sourceBubbleSortList = [1, 2, 3, 4, 6, 5]

 

下面附上氣泡排序法的範例程式 -(使用Python撰寫)

# Bubble Sort - Example

先準備一組測試數列
sampleList = [6, 5, 4, 3, 2, 1]

def bubbleSortExample(sourceBubbleSortList):
     # 找出數列長度
     listLength = len(sourceBubbleSortList)
     i = 0
     # 這裡的 i 是計算還有幾個值未排序
     while i < listLength-1:
         j = listLength - 1
         # 這邊控制的是,是哪兩個值要做比較
         while j > i :
             print(" sourceBubbleSortList = " + str(sourceBubbleSortList))
             # 比較相鄰兩個數,若數值大小不同則交換,並逐一比較,直到相鄰的數值比完為止
             if sourceBubbleSortList[j] < sourceBubbleSortList[j-1]:
                 tempNum = sourceBubbleSortList[j]
                 sourceBubbleSortList[j] = sourceBubbleSortList[j-1]
                 sourceBubbleSortList[j-1] = tempNum

             j = j - 1
         i = i + 1

     return sourceBubbleSortList

 

# 列印出結果
print(bubbleSortExample(sampleList))

 

如果覺得對你有幫助的話. 請幫小弟按個讚吧~

資料結構相關文章:

      資料結構 - Tree 的介紹

      插入排序法 - 使用Python(Insertion Sort)

      合併排序法 - 使用Python(Merge sort)

創作者介紹
創作者 newaurora 的頭像
newaurora

史丹利愛碎念

newaurora 發表在 痞客邦 留言(0) 人氣()