顧名思義,氣泡排序直觀的意思是氣泡越大冒的越快:),對應到我們的列表中就是數字最大的先選出來,然後依次進行。例如 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]
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)
排序演算法之python氣泡排序
氣泡排序是一種交換排序 比較相鄰的連個關鍵字,把大的往後放,小的就向前移動,即冒泡 def bubblesort input list 如果待排序列為空,則直接返回空列表 if len input list 0 return sorted list input list for i in range...
排序演算法(python) 之 氣泡排序
比較相鄰的兩個元素,若前乙個大於後乙個則交換 對每一對相鄰元素進行比較,直至最後一對元素。重複上述步驟,知道排序完成。這為向上冒泡。向下冒泡同理。1 向上冒泡 m input split n int m i for i in range len m 輸入的陣列 for i in range len ...
Python排序演算法之氣泡排序
比較列表相鄰的兩個值,如果前面比後面大,則交換這兩個值。每一趟氣泡排序,無序區減少乙個數,有序區增加乙個數。最壞情況 o n 2n 2 n2 平均情況 o n 2n 2 n2 最好情況 o n o 1 穩定 簡單 趟數 n 1 無序區範圍 0 n 趟數 1 在一趟氣泡排序完成後,如果沒有發生任何的交...