数据结构与算法笔记(六)—— 冒泡排序
生活随笔
收集整理的這篇文章主要介紹了
数据结构与算法笔记(六)—— 冒泡排序
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
什么是冒泡排序
冒泡排序(英語:Bubble Sort)是一種簡單的排序算法。它重復(fù)地遍歷要排序的數(shù)列,一次比較兩個(gè)元素,如果他們的順序錯(cuò)誤就把他們交換過來。遍歷數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個(gè)算法的名字由來是因?yàn)樵叫〉脑貢?huì)經(jīng)由交換慢慢"浮”到數(shù)列的頂端。
算法步驟
冒泡排序的分析
那么我們需要進(jìn)行 n-1 次冒泡過程,每次對應(yīng)的比較次數(shù)如下表所示:
| 1 | n-1 |
| 2 | n-3 |
| 3 | n-3 |
| ··· | ··· |
| n-1 | 1 |
冒泡排序的演示
時(shí)間復(fù)雜度
- 最優(yōu)時(shí)間復(fù)雜度:O(n)(表示遍歷一次發(fā)現(xiàn)沒有任何可以交換的元素,排序結(jié)束)
- 最壞時(shí)間復(fù)雜度:O(n2)
- 穩(wěn)定性:穩(wěn)定
代碼實(shí)現(xiàn)
def bubble_sort(alist):'''冒泡排序'''n = len(alist)for j in range(n-1):count = 0for i in range(n-1-j):if alist[i] > alist[i+1]:alist[i],alist[i+1] = alist[i+1],alist[i]count += 1if 0 == count:returnif __name__ == '__main__':li = [9,5,6,8,2,7,3,4,1]print(li)bubble_sort(li)print(li)結(jié)果:
[9, 5, 6, 8, 2, 7, 3, 4, 1] [1, 2, 3, 4, 5, 6, 7, 8, 9]總結(jié)
以上是生活随笔為你收集整理的数据结构与算法笔记(六)—— 冒泡排序的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法笔记 —— 十大经典排序及
- 下一篇: 数据结构与算法笔记(七)—— 选择排序