氣泡排序演算法的運作如下:
1.比較相鄰的元素。如果第乙個比第二個大(公升序),就交換他們兩個。
2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
3.針對所有的元素重複以上的步驟,除了最後乙個。
4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
# 控制輪數
for j in range(1, len(alist)):
count = 0
# 控制比較次數
for i in range(0, len(alist) - j):
# 比較相鄰數字大小
if alist[i] > alist[i + 1]:
alist[i], alist[i + 1] = alist[i + 1], alist[i]
count += 1
# 遍歷一遍沒有數字交換,直接退出
if count == 0:
break
if __name__ == '__main__':
alist = [5, 3, 4, 7, 2, 9, 1]
bubble_sort(alist)
print(alist)
時間複雜度
最優時間複雜度:o(n) (表示遍歷一次發現沒有任何可以交換的元素,排序結束。)
最壞時間複雜度:o(n^2)
穩定性:穩定演算法
排序 氣泡排序 Python
依次比較相鄰兩元素的大小,順序與要求的不一致就交換。這樣會把待排序序列中的最大 最小 元素不斷 浮 到最右端,最終完成公升序或降序排列。對序列 2,4,1,3,6,5 按公升序排列 只記錄有交換發生的迴圈 第一次迴圈 2,4,1,3,6,5 2,1,4,3,6,5 2,1,3,4,6,5 2,1,3...
Python排序 氣泡排序
排序 氣泡排序 氣泡排序演算法的原理如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需...
Python氣泡排序
需求 對於一串不知道個數的無序數進行從大到小或從小到大排序。氣泡排序 思想 首先第乙個數與第二個數做比較,大者放後面作為新的第二個數,然後,第二個數再與第三個數作比較,大者放後面作為新的第三個數,以此類推,相鄰兩位置數比較大小,若前者大於後者,則交換位置,這樣遍歷完一次資料就把最大數放在了最後面,即...