資料結構與演算法(氣泡排序)

2021-10-02 15:27:50 字數 1000 閱讀 8349

氣泡排序是一種簡單的排序演算法。它重複地遍歷要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把它們交換過來。遍歷數列的工作是重複的進行直到沒有在需要的交換,也就是說該數列已經排序完成,這個演算法的名字由來是因為越小的元素會經由交換慢慢「浮」到數列的頂端。

冒泡演算法的運作如下:

交換過程圖示(第一次):

那麼我們需要進行n-1次冒泡過程,每次對應的比較次數如下圖所示:

pass

comparisons

1n-1

2n-2

3n-3……

n-11

def bubble_sort(alist):

"""氣泡排序"""

for j in range(len(alist)-1):

for i in range(len(alist)-j-1):

if alist[i] > alist[i+1]:

alist[i], alist[i+1] = alist[i+1], alist[i]

return alist

對於一開始就有序的序列,時間複雜度為o(n)

#優化冒泡演算法

def bubble_sort(alist):

"""氣泡排序"""

for j in range(len(alist)-1):

count = 0

for i in range(len(alist)-j-1):

if alist[i] > alist[i+1]:

alist[i], alist[i+1] = alist[i+1], alist[i]

count += 1

if 0 == count:

return alist

資料結構與演算法 排序 氣泡排序

兩兩相鄰記錄的關鍵字,如果反序則交換,直到沒有反序的記錄為止。氣泡排序基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此...

資料結構與演算法 排序 氣泡排序

今天來學一下十大排序 首先,我們先了解下各個排序的時間複雜度 冒泡 選擇 插入 歸併 快速 希爾 堆排序屬於比較排序 在這裡,我們預設排序是從小到大排序。乙個動態演示各種排序演算法的動畫 visualgo 如果相等的兩個元素,在排序前後的相對位置保持不變,那麼這個演算法是穩定的排序演算法。比如 5 ...

資料結構與演算法 氣泡排序

氣泡排序的思想是,從前往後 或從後往前 掃瞄,每找乙個逆序對,就將它更正過來,這樣每一輪總可以找到乙個最大值或最小值。1 從前往後掃瞄,每次找到的較大值插入到後面,第一層迴圈代表當前插入位置。public static void sinksort int nums,int start,int end...