用python語言實現氣泡排序
阿新 • • 發佈:2019-01-05
氣泡排序:
eg: 54 26 93 17 77 31 44 55 20
從第一個開始依次與後面相鄰一個數字相比較,54比26小,26排在第一個,54排到第二個,54與93再次相比54小排在前面,94去再次與後面的相比,依次輪迴,得出最後結果
python語言的程式中最簡單方法:
#coding:utf-8 def bubble_sort(alist): """氣泡排序""" n = len(alist) for j in range(n-1): for i in range(0,n-1-j): if alist[i] > alist[i+1]: alist[i],alist[i+1] = alist[i+1],alist[i] if __name__ =="__main__": li = [54,26,93,17,77,31,44,55,20] print(li) bubble_sort(li) print(li)
此時最優時間不是O(n)
可以優化程式碼為:
#coding:utf-8 def bubble_sort(alist): """氣泡排序""" 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 += 1 if 0 == count: return if __name__ =="__main__": li = [54,26,93,17,77,31,44,55,20] print(li) bubble_sort(li) print(li)
此時最優時間複雜度為O(n)
最壞時間複雜度為O(n的2次方)