1. 程式人生 > >10_資料結構與演算法_氣泡排序_Python實現

10_資料結構與演算法_氣泡排序_Python實現

"""
氣泡排序:
    思想:
        從列表的開頭處開始,並且比較一對資料項,知道移動到列表的末尾。
        每當成對的兩項之間的順序不正確時,演算法就交換其位置。
        這個過程的效果就是將最大的項以冒泡的方式排到列表的末尾。
        然後,演算法從列表開頭到倒數第2個列表項重複這一個過程,依次類推,直到該演算法從列表的最後一項開始執行。
"""

import random

#定義一個交換函式
def swap(lyst,i,j):
    temp = lyst[i]
    lyst[i] = lyst[j]
    lyst[j] = temp

#定義氣泡排序
def bubble_sort(lyst):
    n = len(lyst)
    while n > 1:
        i = 1
        while i < n:
            if lyst[i] < lyst[i-1]:
                swap(lyst,i,i-1)
            i += 1
        n -= 1
    return lyst

def test_sort():
    lyst = list(range(10))
    lyst = random.shuffle(lyst)          #打亂排序
    assert bubble_sort(lyst) == lyst

if __name__ == "__main__":
    test_sort()