冒泡排序
顧名思義,冒泡排序直觀的意思是氣泡越大冒的越快:),對應到我們的列表中就是數字最大的先選出來,然后依次進行。例如 myList = [1,4,5,0,6],比較方式為:
相鄰的兩個數字先進行比較,也就是myList[0]和myList[1],發現不是">"的關系,就繼續比較myList[1]和myList[2]。。。依次進行,發現myList[2]>myList[3](及5>0),就進行交換,所以走完第一次全列表比較得到新列表[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
直接上代碼:
1 def bubbleSort(myList): 2 #首先獲取list的總長度,為之后的循環比較作准備 3 length = len(myList) 4 5 #一共進行幾輪列表比較,一共是(length-1)輪 6 for i in range(0,length-1): 7 8 #每一輪的比較,注意range的變化,這里需要進行length-1-長的比較,注意-i的意義(可以減少比較已經排好序的元素) 9 for j in range(0,length-1-i): 10 11 #交換 12 if myList[j] > myList[j+1]: 13 tmp = myList[j] 14 myList[j]=myList[j+1] 15 myList[j+1] = tmp 16 17 #打印每一輪交換后的列表 18 for item in myList: 19 print(item) 20 print("=============================") 21 22 print("Bubble Sort: ") 23 myList = [1,4,5,0,6] 24 bubbleSort(myList)