演算法 冒泡演算法

2021-10-02 18:06:02 字數 1222 閱讀 8008

冒泡演算法(英語:bubble sort)是一種簡單的排序演算法。它重複的遍歷要排序的數列,一次比較兩個元素,如果它們的順序錯誤,就把它們交換過來。遍歷數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

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

時間複雜度

def

bubble_sort

(alist)

:# 氣泡排序

# 順序表只交換兩個位置上儲存的資料

# 鍊錶還需要交換節點,相比之下較為麻煩

# n代表列表中元素的個數

# 先寫內層迴圈,再寫外層迴圈

n =len(alist)

for j in

range

(n -1)

:# 班長需要走的次數

count =

0# 從來沒有交換過

for i in

range(0

, n -

1- j)

:# 包前不包後

# 班長從頭走到尾

if alist[i]

> alist[i +1]

: alist[i]

, alist[i +1]

= alist[i +1]

, alist[i]

count +=

1if count ==0:

# 意為在整個過程中未進行交換,數列本身有序,此時時間複雜度為o(n),即為最優

return

if __name__ ==

"__main__"

: li =[54

,26,93

,17,77

,31,44

,55,20

]print

(li)

bubble_sort(li)

print

(li)

# for j in range(len(alist) - 1, 0, -1):

# for i in range(j):

# if alist[i] > alist[i + 1]:

# alist[i], alist[i + 1] = alist[i + 1], alist[i]

Python演算法 冒泡演算法

氣泡排序的思想 每次比較兩個相鄰的元素,如果他們的順序錯誤就把他們交換位置 比如有五個數 12,35,99,18,76,從大到小排序,對相鄰的兩位進行比較 經過第一趟比較後,五個數中最小的數已經在最後面了,接下來只比較前四個數,依次類推 99,35,76,18,12 99,76,35,18,12 9...

優化演算法 冒泡演算法

關於排序其實有很多演算法,冒泡使用是非常廣泛,也很易於理解,經過研究,我發現,冒泡可以有更優化的演算法 首先先來看一下冒泡的流程 可以看到,一共輸出是36個,去掉最終結果8個也就是28個,就是說冒泡至少需要n 1 n 2 1.那麼我嗯可以通過列印看到有些對比是重複的資料,沒必要出現的,那麼怎麼規避呢...

排序演算法之冒泡演算法

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