冒泡演算法(英語: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...