它重複地走過要排序的數列,一次比較兩個元素,如果順序錯誤就把他們交換。
由於在排序的過程中總是小的數字往前放,打的數字往後放,相當於氣泡上公升,故稱為氣泡排序。
(1).每趟排序中需要通過比較找到第i個小的元素。
所以我們需要乙個外部迴圈,從陣列的手段開始,一直到掃瞄到第二個元素,剩下最後乙個元素必然為最大。
(2)假設是第i趟排序,可知,前i -1個元素已經有序,現在要找第i個元素,只需從陣列末端開始,掃瞄到第i個元素,將他們兩兩比較即可。所以,需要乙個內部迴圈,從陣列第i個元素一直到末端。
冒泡演算法的效能
時間複雜度:
空間複雜度:o(1)
穩定性:穩定
複雜度:簡單
當資料越接近正序的時候,氣泡排序效能越好。
假定在待排序的記錄順序中,存在多個具有相同的關鍵字的記錄,若經過排序,這些相同關鍵字記錄的相對次序保持不變,即在原序列中,ri == rj,且ri在rj之前,在排序之後,ri仍然在rj之前,稱這種排序演算法是穩定的,否則為不穩定的。
冒泡演算法是一種穩定的排序演算法
具體實現:
最近在看python就用它寫了
arr=[9,0,8,1,7,2,6,3,5,4]
for i in range(9):
for j in range(i,9):
if arr[j]>=arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
print arr
常見的優化的方法是加入標誌性變數 flag,用來標誌某一次排序的過程中是否發生了交換,如果進行了某一趟排序時沒有進行資料的交換,則說明所有的資料均已經有序,可以立即結束排序,避免不必要的過程。
arr=[9,0,8,1,7,2,6,3,5,4]
flag = 1
for i in range(9):
if(flag == 0):
break
flag = 0
for j in range(i,9):
if arr[j]>arr[j+1]:
flag = 1
arr[j],arr[j+1] = arr[j+1],arr[j]
print arr
氣泡排序 bubble sort
氣泡排序是最基本的排序演算法,常被做為內部排序的第乙個排序演算法進行講解。它的原理非常簡單,只是一 個兩層迴圈,每次將最大或最小的放到陣列最後。演算法如下 b為陣列的起始位置,e為陣列的結果位置 int bubble int data,int b,int e return n 這個函式返回兩個整數比...
氣泡排序(Bubble Sort)
無論你學習哪種程式語言,在學到迴圈和陣列時,通常都會介紹一種排序演算法來作為例子,而這個演算法一般就是氣泡排序。並不是它的名稱很好聽,而是說這個演算法的思路最簡單,最容易理解。因此,哪怕大家可能都已經學過氣泡排序了,我們還是從這個演算法開始我們的排序之旅。氣泡排序 bubble sort 一種交換排...
氣泡排序 Bubble Sort
維基百科 氣泡排序 演算法思想 不斷的交換相鄰的兩個反序元素,使最小元素 上浮 或使最大元素 下沉 每一趟 冒泡 都會確定乙個最大的元素或最小的元素,同選擇排序類似,演算法總共只需進行n 1趟。將乙個陣列豎著放,低位址在上面,高位址在下面,所謂 上浮 就是較小的元素不斷向低位址靠近,所謂 下沉 就是...