1. 程式人生 > 其它 >資料結構與演算法 5.氣泡排序 BubbleSort

資料結構與演算法 5.氣泡排序 BubbleSort

氣泡排序 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]