日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序算法-冒泡排序

發布時間:2025/4/5 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法-冒泡排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
冒泡排序是一種簡單的排序算法。 它重復地走訪過要排序的數列,一次比較兩個元素,如果它們的順序錯誤就把它們交換過來。 走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。 這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。(相鄰對比交換位置)# 基礎版本 def bubble_sort(data_list):length = len(data_list)for i in range(length):for j in range(length-1-i):if data_list[j] > data_list[j+1]:data_list[j], data_list[j+1] = data_list[j + 1], data_list[j]return data_list# 優化1 def bubble_sort_1(data_list):"""如果沒有元素交換,說明排序過程已經有序,直接退出循環"""length = len(data_list)for i in range(length):swap = Falsefor j in range(length-1-i):if data_list[j] > data_list[j+1]:swap = Truedata_list[j], data_list[j+1] = data_list[j + 1], data_list[j]if not swap:breakreturn data_list# 優化2 def bubble_sort_2(data_list):"""排序過程中,數據中間分成兩段,一段是無序狀態,另一段是有序狀態,每一次循環過程中,記錄最后一次交換元素的位置,這個位置是有序和無序的邊界下一次循環到邊界即可,從而減少循環次數"""length = len(data_list)boarder = length - 1last_index = 0for i in range(length):swap = Falsefor j in range(boarder):if data_list[j] > data_list[j+1]:swap = Truedata_list[j], data_list[j+1] = data_list[j + 1], data_list[j]last_index = jif not swap:breakboarder = last_indexreturn data_listunsort = [3, 4, 2, 1, 5, 6, 7, 8] print(bubble_sort(unsort)) print(bubble_sort_1(unsort)) print(bubble_sort_2(unsort))冒泡排序算法的性能分析: 1、執行效率最小時間復雜度:很好計算,最好的情況就是數據一開始就是有序的,因此一次冒泡即可完成, 時間復雜度為 O(n)最大時間復雜度:也很好計算,最壞的情況就是數據一開始就是倒序的,因此進行 n-1 次冒泡即可完成,時間復雜度為 O(n^2)2、內存消耗算法的內存消耗可以通過空間復雜度來衡量,冒泡排序僅需要一個變量 tmp 來儲存交換的數據, 因此空間復雜度為 O(1),空間復雜度為 O(1) 的排序算法,也叫 原地排序算法3、排序算法的穩定性針對排序算法,有一個重要的衡量指標,就是穩定性,這個概念是說,如果待排序的序列中存在 值相等的元素,經過排序之后,相等元素之間原有的先后順序不變。假如有序列 4,1,2,2,我 們把第一個 2 叫 2',第二個2 叫 2'',如果排序之后,為1,2',2'',4 那么這個排序算法就是穩定的,否則就是不穩定的。穩不穩定有什么用嗎,值都是一樣的?當然有用,因為在軟件開發中, 要排序的數據不單單是一個屬性的數據, 而是有多個屬性的對象,假如對訂單排序,要求金額排 序,訂單金額相同的情況下,按時間排序。 最先想到的方法就是先對金額排序,在金額相同的訂 單區間內按時間排序,理解起來不難,有沒有想過,實現起來很復雜。 但是借助穩定的排序算法,就很簡單了,先按訂單時間排一次序,再按金額排一次序就可以了

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的排序算法-冒泡排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。