1. 程式人生 > >排序演算法之氣泡排序

排序演算法之氣泡排序

氣泡排序 顧名思義,氣泡排序直觀的意思是氣泡越大冒的越快:),對應到我們的列表中就是數字最大的先選出來,然後依次進行。例如 myList = [1,4,5,0,6],比較方式為:

相鄰的兩個數字先進行比較,也就是myList[0]和myList[1],發現不是">"的關係,就繼續比較myList[1]和myList[2]。。。依次進行,發現myList[2]>myList3,就進行交換,所以走完第一次全列表比較得到新列表[1,4,0,5,6],然後每一次掃描得到的新列表如下:

第一次:[1,4,0,5,6]

第二次:[1,0,4,5,6]

第三次:[0,1,4,5,6]

第四次:[1,4,5,0,6]

時間複雜度:O(n^2). 需要進行的比較次數為第一輪 n-1,n-2…1, 總的比較次數為 n*(n-1)/2 直接上程式碼:`def bubbleSort(myList): #首先獲取list的總長度,為之後的迴圈比較作準備 length = len(myList)

#一共進行幾輪列表比較,一共是(length-1)輪
for i in range(0,length-1):
    
    #每一輪的比較,注意range的變化,這裡需要進行length-1-長的比較,注意-i的意義(可以減少比較已經排好序的元素)
    for j in range(0,length-1-i):
        
        #交換
        if myList[j] > myList[j+1]:
            tmp = myList[j]
            myList[j]=myList[j+1]
            myList[j+1] = tmp
            
    #列印每一輪交換後的列表       
    for item in myList:
        print(item)
    print("=============================")

print("Bubble Sort: ") myList = [1,4,5,0,6] bubbleSort(myList)`