算法(一)冒泡排序與封裝接構
阿新 • • 發佈:2017-10-10
冒泡排序
冒泡排序
冒泡排序是相近的兩個數字兩兩比較,然後按照從小到大或者從大到小的順序排列
比如有兩個數字A,B, A = 3 , B = 2,A 比 B 大,則A 和 B 位置發生交換,順序變成了 B,A,詳細過程看輸出結果就很清晰了。
升序排序的代碼如下:
lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9]] lst = lst1[0] lenth = len(lst) #升序 count_swap = 0 for i in range(lenth): flag = False #標記 for j in range(lenth - 1): if lst[j] > lst[j + 1]: lst[j], lst[j + 1] = lst[j + 1], lst[j] flag = True #如果發生交換,標記設為True count_swap += 1 print(lst) if not flag: #not flag表示flag=False,即沒有發生交換,表示全部列表已經排序完成,終止循環 break print(lst) #輸出排序結果 print(count_swap)
輸出結果:
[1, 8, 9, 5, 6, 7, 4, 3, 2] [1, 8, 5, 9, 6, 7, 4, 3, 2] [1, 8, 5, 6, 9, 7, 4, 3, 2] [1, 8, 5, 6, 7, 9, 4, 3, 2] [1, 8, 5, 6, 7, 4, 9, 3, 2] [1, 8, 5, 6, 7, 4, 3, 9, 2] [1, 8, 5, 6, 7, 4, 3, 2, 9] [1, 5, 8, 6, 7, 4, 3, 2, 9] [1, 5, 6, 8, 7, 4, 3, 2, 9] [1, 5, 6, 7, 8, 4, 3, 2, 9] [1, 5, 6, 7, 4, 8, 3, 2, 9] [1, 5, 6, 7, 4, 3, 8, 2, 9] [1, 5, 6, 7, 4, 3, 2, 8, 9] [1, 5, 6, 4, 7, 3, 2, 8, 9] [1, 5, 6, 4, 3, 7, 2, 8, 9] [1, 5, 6, 4, 3, 2, 7, 8, 9] [1, 5, 4, 6, 3, 2, 7, 8, 9] [1, 5, 4, 3, 6, 2, 7, 8, 9] [1, 5, 4, 3, 2, 6, 7, 8, 9] [1, 4, 5, 3, 2, 6, 7, 8, 9] [1, 4, 3, 5, 2, 6, 7, 8, 9] [1, 4, 3, 2, 5, 6, 7, 8, 9] [1, 3, 4, 2, 5, 6, 7, 8, 9] [1, 3, 2, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 2, 3, 4, 5, 6, 7, 8, 9] 25
降序排序的代碼如下:
lst1 = [[1, 9, 8, 5, 6, 7, 4, 3, 2], [1, 2, 3, 4, 5, 6, 7, 8, 9]] lst = lst1[0] lenth = len(lst) #降序 count_swap = 0 #交換次數 for i in range(lenth): flag = False #標記 for j in range(lenth - 1, 0, -1): if lst[j] > lst[j - 1]: lst[j], lst[j - 1] = lst[j - 1], lst[j] flag = True #如果發生交換,標記設為True count_swap += 1 #發生交換,次數+1 print(lst) if not flag: #not flag表示flag=False,即沒有發生交換,表示全部列表已經排序完成,終止循環 break print(lst) #輸出排序結果 print(count_swap)
#輸出結果:
[1, 9, 8, 5, 7, 6, 4, 3, 2] [1, 9, 8, 7, 5, 6, 4, 3, 2] [9, 1, 8, 7, 5, 6, 4, 3, 2] [9, 1, 8, 7, 6, 5, 4, 3, 2] [9, 8, 1, 7, 6, 5, 4, 3, 2] [9, 8, 7, 1, 6, 5, 4, 3, 2] [9, 8, 7, 6, 1, 5, 4, 3, 2] [9, 8, 7, 6, 5, 1, 4, 3, 2] [9, 8, 7, 6, 5, 4, 1, 3, 2] [9, 8, 7, 6, 5, 4, 3, 1, 2] [9, 8, 7, 6, 5, 4, 3, 2, 1] [9, 8, 7, 6, 5, 4, 3, 2, 1] 11
冒泡排序
選擇排序
二元選擇排序
插入排序
二叉樹
算法(一)冒泡排序與封裝接構