排序演算法之氣泡排序

2021-08-17 11:16:01 字數 629 閱讀 8072

氣泡排序是排序演算法裡面較為簡單的一種演算法,有公升序與降序之分,面試時可問清楚是公升序還是降序。

以公升序為例,對於陣列a[1:n],每次排序處理第1個數至第n-i個數,將其與下乙個元素進行比較,較大的數向後移。每次可確定第i大的數,需經過n-i次比較,最少進行0次交換,最多進行n-i次交換。所需時間複雜度為o(n2)。

優化:每次排序前設定flag=1,若該次排序中進行了交換則將flag置為0。若某次排序結束後flag=1則排序完成。【對於[1, 2, 4, 3, 5]類進行優化】

def bubblesort(a):

for i in range(len(a)-1):

flag = 1

for j in range(len(a)-1-i):

if a[j] > a[j+1]:

a[j],a[j+1] = a[j+1],a[j]

flag = 0

if flag:

break

return a

if __name__ == '__main__':

a = [1, 7, 3, 9, 14, 2, 5, 9, 6, 10]

bubblesort(a)

print(a)

排序演算法之氣泡排序

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

排序演算法之氣泡排序

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

排序演算法之氣泡排序

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