第一遍:冒泡取第乙個數和第二個數進行比較,如果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-8def 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-8def 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個中最...