排序演算法之氣泡排序

2021-08-31 13:39:04 字數 1041 閱讀 6157

氣泡排序

顧名思義,氣泡排序直觀的意思是氣泡越大冒的越快:),對應到我們的列表中就是數字最大的先選出來,然後依次進行。例如 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)

排序演算法之氣泡排序

參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...

排序演算法之氣泡排序

對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...

排序演算法之氣泡排序

氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,...