實作冒泡排序的程式如下:
def bubble_sort(alist): n=len(alist) for k in range(n-1):#最后最小的一個數字不用排序,因為已經是最小了 for i in range(n-1-k):#用k來限定每一個小冒泡排序的區間 if(alist[i]>alist[i+1]): alist[i],alist[i+1]=alist[i+1],alist[i] return alist def bubble_sort_2(alist): n=len(alist) count=0#利用count計算是否已經排序完畢,如果排序完畢,則直接回傳list for k in range(n-1): for i in range(n-1-k): if(alist[i]>alist[i+1]): alist[i],alist[i+1]=alist[i+1],alist[i] count+=1 if count==0: print("The second list is sorted,we do not have to sort this list again!") return alist return alist #時間復雜度:O(n^2),因為這個演算法有兩個回圈,且每一個回圈的變數都是n,因此時間復雜度是n*n alist=[4,5,7,8,3,2,7,1,90,234] print(bubble_sort(alist)) alist_2=[1,2,3,4,5,6,7,8] print(bubble_sort_2(alist_2))
在這段程式當中,我們分別定義了兩個函式,第一個函式是沒有識別串列當中的數字是否已經排序完畢,而第二個函式當中識別了串列當中的數字是否排序完畢,這樣會讓整個演算法顯得更加的完善,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67608.html
標籤:其他
上一篇:資料結構(三):堆疊
