1. 程式人生 > >用python語言實現氣泡排序

用python語言實現氣泡排序

氣泡排序:

    eg: 54 26 93 17 77 31 44 55 20

從第一個開始依次與後面相鄰一個數字相比較,54比26小,26排在第一個,54排到第二個,54與93再次相比54小排在前面,94去再次與後面的相比,依次輪迴,得出最後結果

 

python語言的程式中最簡單方法:

#coding:utf-8

def bubble_sort(alist):
    """氣泡排序"""
    n = len(alist)
    for j in range(n-1):
        for i in range(0,n-1-j):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1] = alist[i+1],alist[i]
if __name__ =="__main__":
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    bubble_sort(li)
    print(li)

此時最優時間不是O(n)

可以優化程式碼為:

#coding:utf-8

def bubble_sort(alist):
    """氣泡排序"""
    n = len(alist)
    for j in range(n-1):
        count = 0
        for i in range(0,n-1-j):
            if alist[i] > alist[i+1]:
                alist[i],alist[i+1] = alist[i+1],alist[i]
                count += 1
        if 0 == count:
            return

        
if __name__ =="__main__":
    li = [54,26,93,17,77,31,44,55,20]
    print(li)
    bubble_sort(li)
    print(li)

此時最優時間複雜度為O(n)

最壞時間複雜度為O(n的2次方)