您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關Python中怎么實現冒泡排序,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
冒泡排序(Bubble Sort)
冒泡排序算法:對無序表進行多趟地比較交換
每一趟對列表兩兩相鄰元素進行比較,大的往后放,這樣在所有元素比較完之后,當前列表的最大項就放到了末尾。然后再對前n-1個數據項進行冒泡排序……最終進行n-1趟冒泡排序,整個列表就排序完成(類似于“氣泡”上浮過程)
1. 第一趟冒泡:共有n-1對相鄰數據進行比較交換
2. 第二趟冒泡:前面的n-1個數據項進行比較交換,共有n-2對相鄰數據項進行比較交換
……
3. 直到第n-1趟冒泡排序:最小項一定就在列表的首位
故總共要進行n-1趟冒泡排序
第幾趟 | 比對次數 |
第1趟 | n-1 |
第2趟 | n-2 |
第3趟 | n-3 |
…… | …… |
第n-1趟 | 1 |
每進行一次冒泡排序后,就少了一個待比較元素。冒泡排序可不會從0次開始,是從1次開始到n-1次。最后一次冒泡只有兩個元素,比較交換后就直接可以結束了
冒泡排序算法分析
對于冒泡排序而言,無論無序表中數據項如何排列,算法過程總是需要進行n-1趟冒泡排序。隨著趟數增加,比對次數從n-1次減少到1次,故比對次數是1+2+3+……+n-1
(1/2)*n^2 - (1/2)*n
比對時間復雜度:O(n^2)
交換次數最好情況:交換次數為0(已經排序好了)
交換次數最壞情況:交換次數n-1次(每次比較都要交換)
交換時間復雜度:O(n^2)
故冒泡排序算法的時間復雜度:O(n^2)
小結:冒泡排序算法是時間復雜度比較差的一類算法,但有一點優勢——冒泡排序不占任何額外存儲空間
冒泡排序——改進
前言:雖然做了改進,但依然沒有改變其時間復雜度
冒泡排序性能的缺陷在于:無論是否需要交換,都要進行比較。其實很多時候這樣的比較是無意義的
若在某一趟冒泡排序中沒有發生任何交換意味著什么?意味著已經排序好了,不用再進行后面的冒泡排序了。反之,只要進行了一次交換,則后面就要再進行一次冒泡排序
以上就是Python中怎么實現冒泡排序,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。