python實現氣泡排序

2021-10-04 19:39:04 字數 1959 閱讀 8060

常見的排序演算法

氣泡排序(bubble sort)

選擇排序(selection sort)

插入排序(insertion sort)

快速排序(quick sort)

希爾排序 (shell sort)

歸併排序 (merge sort)

冒泡演算法的思想

氣泡排序演算法的運作如下:

比較相鄰的元素。如果第乙個比第二個大(公升序),就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。

針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

下面來用python實現氣泡排序

#_*_coding:utf-8_*_

defbubble_sort

(a):

#a is a list

ifnot a:

return

length =

len(a)

for i in

range(0

, length -1)

:for j in

range(0

, length - i -1)

:if a[j]

> a[j+1]

: a[j]

, a[j+1]

= a[j+1]

,a[j]

if __name__ ==

'__main__'

: list1 =[34

,12,1

,8,9

,19,12

]print

(list1)

bubble_sort(list1)

print

(list1)

分析一下上面的程式可以得出:

1.時間複雜度o(n^2)

2. 如果原來的序列本來就是有序的話,如果按照上述演算法,時間複雜度依舊是o(n^2), 對此可以進行演算法優化,可以加入內迴圈計數器用來記錄交換的次數,如果內迴圈計數器始終為零,則表示該數列是有序的,就不用進行外迴圈了,演算法複雜度可以o(n)

優化演算法實現為:

#_*_coding:utf-8_*_

defbubble_sort

(a):

#a is a list

ifnot a:

return

length =

len(a)

for i in

range(0

, length -1)

:**count =0**

for j in

range(0

, length - i -1)

:if a[j]

> a[j+1]

: a[j]

, a[j+1]

= a[j+1]

,a[j]

**count +=1**

**if count ==0:

return

**if __name__ ==

'__main__'

:#list1 = [34,12,1,8,9,19,12]

list1 =[1

,2,3

,4,5

]print

(list1)

bubble_sort(list1)

print

(list1)

冒泡演算法時間複雜度總結

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

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

穩定性:穩定

氣泡排序(python實現)

coding utf 8 created on tue jul 4 11 37 19 2017 data list cnt num all 0 def data in func data list,cnt num all while true judge continue input 請選擇是輸入資...

氣泡排序(Python實現)

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

Python實現氣泡排序

氣泡排序 bubble sort 是最容易理解的排序演算法之一,但是執行效率有點低。冒泡過程 對待排序部分 假設有m個元素 從頭開始進行兩兩比較,如果第乙個比第二個大 公升序 就交換他們兩個。這樣本輪排序結束後就可以保證值最大的元素在最右邊,那麼下次只需要對前面 m 1 個數進行冒泡。完整的氣泡排序...