冒泡排序

冒泡排序屬於交換排序
相鄰元素兩兩比較大小,若是前面比後面大,就交換位置,最後一個元素將是最大的數
時間複雜度爲O(n²)優化

優化點:
- 冒泡法須要一輪一輪進行比較,若是某一趟中,一次都沒有交換,那就說明序列已經排好序了,就能夠中止循環了code

l = [1, 9, 8, 5, 6, 7, 4, 3, 2]

# 一共處理len(l)-1趟
for i in range(len(l) - 1):
    # 定義一個開關,默認進來沒有交換過,設爲False
    flag = False
    # 逐個兩兩比較,每處理一趟固定一個數,比較次數爲len(l)-1-i次
    for j in range(len(l)-1 - i):
        # 若是前面比後面大,則互換位置
        if l[j] > l[j+1]:
            l[j], l[j+1] = l[j+1], l[j]
            # 若是交換過,則設置開關爲True
            flag = True
    # 若是沒有交換過,就中止循環
    if not flag:
        break

print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

參考:
https://zh.wikipedia.org/wiki/冒泡排序
https://en.wikipedia.org/wiki/Bubble_sort排序

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息