演算法 氣泡排序

2022-08-02 20:30:14 字數 1487 閱讀 7777

第一遍:冒泡取第乙個數和第二個數進行比較,如果x(i)>x(i+1),就調換。這麼遍歷完一遍後,最後乙個元素(n)是序列裡最大的乙個數。

第二遍:第乙個數和後面的數進行比較,如果x(i)>x(i+1),就調換,一直到倒數第二個元素(n-1)。

總共需要遍歷 n-1。

核心思想:遍歷n-1

陣列:12 23 34 2 31

(12 23 2 34 31)

第一次遍歷:12 23 2 31 34 

第二次遍歷:12   2  23 31  34

第三次遍歷: 2  12  23 31  34

。。。(此處為什麼沒有第4次,因為第3次已經排好了)

答案:n-1

# encoding=utf-8

def bubblesort(listx):

xlen = len(listx)

for i in xrange(xlen-1):

for j in xrange(xlen-1-i):

#for j in xrange(xlen - 1):

if listx[j] > listx[j+1]:

listx[j],listx[j+1] = listx[j+1],listx[j]

return listx

if __name__ == '__main__':

print bubblesort([32,34,1,3,45])

第乙個for迴圈決定比較多少次。i---控制遍歷多少次

第二個for迴圈決定每次迴圈要幹什麼事。j---控制每次比較元素的下標

不影響最終結果,但是排序過程會多比較那些沒有必要再去比較的下標。

# encoding=utf-8

def bubblesort(listx):

xlen = len(listx)

for i in xrange(xlen-1):

for j in xrange(xlen-1-i): #for j in xrange(xlen - 1):

if listx[j]< listx[j+1]:

listx[j],listx[j+1] = listx[j+1],listx[j]

return listx

if __name__ == '__main__':

print bubblesort([32,34,1,3,45])

第一次比較:n-1次

第二次比較:n-2次

第n-1次比較:1次

一共:(n-1)+(n-1)+…+1=(n-1+1)(n-1)/2=n(n-1)/2

n^2/2-n/2

o(n*2)

得到演算法的計算次數

把計算次數中,保留最大的項式,去掉其它的項式

把最大項式的因子去掉

匹配上述公式,得到o表示的時間複雜度

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...

氣泡排序 氣泡排序演算法優化

常用的排序演算法主要包括 1 插入排序 直接插入排序 希爾排序 2 交換排序 氣泡排序 快速排序 3 選擇排序 簡單選擇排序 堆排序快速排序 4 歸併排序其中,氣泡排序算是最簡單的一種排序演算法 public class bubble int temp 0 for int i 0 iarr j 1 ...

排序演算法 氣泡排序

一.氣泡排序的過程 公升值排序 1.將第乙個記錄的關鍵字與第二個記錄的關鍵字進行比較,若key 1 key 2 則交換。然後比較第二個與第三個,依此類推,直到第n 1個與第n個比較為止,第一趟排序完後,記錄最大的關鍵字會被排在最後面。2.將記錄的前n 1個關鍵字進行第二趟比較交換,直到前n 1個中最...