資料結構與演算法(三) 氣泡排序的python實現

2021-09-12 09:19:07 字數 1451 閱讀 5574

氣泡排序最符合咱們思維上的排序方式。

氣泡排序演算法步驟:

接下來,這個演算法用順序表實現,畢竟用鍊錶有些複雜。

def

bubble_sort

(alist)

: n =

len(alist)

for j in

range(0

,n-1):

for i in

range(0

,n-j-1)

:if alist[i]

>alist[i+1]

: alist[i]

,alist[i+1]

= alist[i+1]

,alist[i]

if __name__ ==

"__main__"

: li =[54

,26,93

,17,77

,31,44

,55,20

]print

(li)

bubble_sort(li)

print

(li)

輸出是:

[54,

26,93,

17,77,

31,44,

55,20]

[17,20

,26,31

,44,54

,55,77

,93]

然而,有一種優化後的冒泡演算法,可以達到最優複雜度的氣泡排序演算法:

def

bubble_sort

(alist)

: n =

len(alist)

for j in

range(0

,n-1):

count =

0for i in

range(0

,n-j-1)

:if alist[i]

>alist[i+1]

: alist[i]

,alist[i+1]

= alist[i+1]

,alist[i]

count +=

1if count ==0:

break

if __name__ ==

"__main__"

: li =[54

,26,93

,17,77

,31,44

,55,20

]print

(li)

bubble_sort(li)

print

(li)

時間複雜度:

最優時間複雜度:o(n) (表示遍歷一次發現沒有任何可以交換的元素,排序結束。)

最壞時間複雜度:o(n2)

穩定性:穩定

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...

資料結構與演算法 排序 氣泡排序

今天來學一下十大排序 首先,我們先了解下各個排序的時間複雜度 冒泡 選擇 插入 歸併 快速 希爾 堆排序屬於比較排序 在這裡,我們預設排序是從小到大排序。乙個動態演示各種排序演算法的動畫 visualgo 如果相等的兩個元素,在排序前後的相對位置保持不變,那麼這個演算法是穩定的排序演算法。比如 5 ...

資料結構與演算法 氣泡排序

氣泡排序的思想是,從前往後 或從後往前 掃瞄,每找乙個逆序對,就將它更正過來,這樣每一輪總可以找到乙個最大值或最小值。1 從前往後掃瞄,每次找到的較大值插入到後面,第一層迴圈代表當前插入位置。public static void sinksort int nums,int start,int end...