1. 程式人生 > 其它 >氣泡排序python_Python 演算法之氣泡排序

氣泡排序python_Python 演算法之氣泡排序

技術標籤:氣泡排序python

3f36d5cee575586343db9a7e5740edf4.gif 點選關注 不迷路

氣泡排序是什麼

氣泡排序(Bubble Sort)也是一種簡單直觀的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。

走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。

作為最簡單的排序演算法之一,氣泡排序給我的感覺就像 Abandon 在單詞書裡出現的感覺一樣,每次都在第一頁第一位,所以最熟悉。

氣泡排序還有一種優化演算法,就是立一個 flag,當在一趟序列遍歷中元素沒有發生交換,則證明該序列已經有序。但這種優化對於提升效能來說並沒有什麼太大作用。

演算法步驟

Step1:比較相鄰的元素。如果第一個比第二個大,就交換他們兩個的位置。

Step2:對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最大的數就是最後一個元素。

Step3:針對所有的元素重複以上的步驟,除了最後一個以外(因為它已經是排序完成後的)。

Step4:持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

程式碼實現

import timedef waste_time(func): #計算方法執行時長的裝飾器    def function(*args,**kwargs):        start_time=time.time()        result=func(*args,**kwargs)        end_time=time.time()        spend=end_time-start_time        print("函式%s 總共耗時%.3f秒:"%(func.__name__,spend))        return result    return 
[email protected]
_timedef bubbleSort(alist): #傳入一個列表,如果是有序的,則只需要檢測一輪,檢視是否進行交換,如果沒有進行交換,說明是有序列表則直接退出迴圈 n=len(alist) for i in range(n-1): count = 0 #用於標記是否有交換的情況 for j in range(n-1-i): if(alist[j] > alist[j+1]): alist[j],alist[j+1]=alist[j+1],alist[j] count+=1 #判斷count是否等於0,如果是0的話表示沒有交換 if(count==0): breakif __name__ == '__main__': alist=[9,20,5,88,66,77,30] #無序列表 print("the init list is:",alist) bubbleSort(alist) print("the sorted list is:",alist) blist=[5, 9, 20, 30, 66, 77, 88] #有序列表 bubbleSort(blist) print(blist)

友情提示:“無量測試之道”原創著作,歡迎關注交流,禁止第三方不顯示文章來源時轉載。更多原創文章請掃碼關注檢視,交流與合作請聯絡:[email protected]

QQ技術交流群:41564936

b31fdcaefe501173839251148c3ae7b8.gif

◆資料庫表結構同步,用Python 竟如此高效?

◆Python 之“棧為何物”

◆Python 演算法之一

◆Python 如何測試WebService介面

◆Python 實現Excel自動化辦公《下》

來都來了,點個在看再走吧~~~

84bb78033f6e62798ab8345fe0bc3b9e.gif