Python排序算法之冒泡排序

冒泡排序

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

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

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

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

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

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

時間複雜度:O(n^2).  須要進行的比較次數爲第一輪 n-1,n-2....1, 總的比較次數爲 n*(n-1)/2

直接上代碼:io

 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)
相關文章
相關標籤/搜索