資料結構與演算法 5.氣泡排序 BubbleSort
阿新 • • 發佈:2021-10-29
氣泡排序 BubbleSort
比較相鄰的元素 升序排列時,如果第一個比第二個大,就將兩個元素交換位置,否則比較第二個和第三個元素,降序反之 對每一對相鄰的元素做同樣的操作,直至完成遍歷,此時序列中最大/最小的元素將被選出放在末尾 這樣一輪比較,叫做一次冒泡 針對所有的元素重複以上的步驟,除了上一輪中最後一個元素 當沒有任何一對元素需要比較時,排序完成 複雜度:最優時間複雜度:O(n) 遍歷後發現沒有需要交換的元素,排序結束 最差時間複雜度:O(n^2) 每輪需要交換(n-1)次,需冒泡(n-1)輪 穩定性:穩定 缺點:交換操作過於頻繁,處理龐大資料時效率太低(計算機執行寫操作是非常消耗資源的)
升序排列
def bubble_sort(varlist):
for j in range(len(varlist)-1,0,-1) :
for i in range(j) :
if varlist[i] > varlist[i+1] :
varlist[i],varlist[i+1] = varlist[i+1],varlist[i]
varl = [30,2,78,6,818,1,395]
bubble_sort(varl)
print(varl)
[1, 2, 6, 30, 78, 395, 818]