氣泡排序 bubblesort

2021-07-16 03:45:32 字數 1265 閱讀 7036

它重複地走過要排序的數列,一次比較兩個元素,如果順序錯誤就把他們交換。

由於在排序的過程中總是小的數字往前放,打的數字往後放,相當於氣泡上公升,故稱為氣泡排序。

(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趟。將乙個陣列豎著放,低位址在上面,高位址在下面,所謂 上浮 就是較小的元素不斷向低位址靠近,所謂 下沉 就是...