冒泡排序之python

來源:互聯網
上載者:User

標籤:提高效率   描述   記錄   屬性   複雜度   image   col   已耗用時間   bubuko   

冒泡排序(Bubble sort)

兩兩比較相鄰記錄的關鍵字,如果反序則交換,直到沒有反序記錄為止。

1.演算法描述:
  • 比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
  • 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;
  • 針對所有的元素重複以上的步驟,除了最後一個;
  • 重複步驟1~3,直到排序完成。

2.演算法屬性:
  • 時間複雜度O(n^2)
  • O(1) :額外的空間  (best case:在列表本來就拍好序的情況)
  • O(n2 ) :比較和交換
  • 適應性::O(n) 接近排序時
  • 交換排序的一種,屬於穩定排序

3.代碼實現
#演算法時間複雜度為O(n*2)‘‘‘為體現冒牌排序細節的不同,我寫出簡單的冒泡排序方法:bubble_sort_easy和改進後的冒泡排序方法:bubble_sort_imp‘‘‘#簡單的冒泡排序方法#它的問題是當列表本來的順序就是比較完好;仍會花費複雜的時間空間來排序def bubble_sort_easy(nums: list):    for i in range(len(nums)):        # 嵌套的二層迴圈的index從0開始,所以後面要len(nums)-i-1        for j in range(len(nums) - i - 1):            if nums[j] > nums[j + 1]:                nums[j], nums[j + 1] = nums[j + 1], nums[j]   #交換    return numsnums = [1,2,5,8,4,3,6]bubble_sort_easy(nums)輸出結果[1, 2, 3, 4, 5, 6, 8]#改進的冒泡排序‘‘‘1.加入time計時runing時間2.加入flag判斷列表是否已經不需要繼續排序,提高效率‘‘‘def bubble_sort_imp(nums=list):    import time    start = time.time()  #開始時間      for i in range(len(nums)): # 當 n pass                is_sorted = True  # 立個flag,當已經排好序的情況時引入Ture的is_sort                for j in range(0, len(nums) - i - 1):            if (nums[j + 1] < nums[j]):                nums[j], nums[j + 1] = nums[j + 1], nums[j]  #交換                                is_sorted = False    #立個False的flag                if (is_sorted): break    #當不需用到嵌套二層for時退出,提高效率                t = time.time() - start  #記下已耗用時間    return nums,tnums = [1,2,5,8,4,3,6]bubble_sort_imp(nums)#運行結果([1, 2, 3, 4, 5, 6, 8], 0.0)

 

冒泡排序之python

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.