排序演算法系列之氣泡排序 3

2022-06-28 14:18:15 字數 654 閱讀 8061

把長度為 l 的陣列樹立起來,從最底部n = l –1 開始,依次向上兩兩交換資料,每輪把最小的資料冒泡到頂部,使得頂部datas[o] – datas[i]為有序陣列,底部datas[i] – datas[n] 為無序陣列;

結束條件:排序好的資料長度為n-1,即(l-2)的時候,排序結束;

缺點:資料需要兩兩交換冒泡到頂部,中途哪怕遇到已經是適合位置的資料也需要被交換,而不能像選擇排序一樣跳過已經在合適位置的資料;

最壞情況:最大資料在最頂部,則會導致(n-1) !階乘移動次數

**如下:

///

///氣泡排序,永遠從底部開始,把相鄰元素比較,交換,每輪把最小的依次浮到頂部

/// public

void bubblesort(t datas) where t : icomparable}}

}

測試資料:

int bubbledatas = ;

program.bubblesort(bubbledatas);

debugextension.debugarray(bubbledatas);

測試結果:

排序演算法系列之氣泡排序

核心思想 氣泡排序是一種典型的 交換排序 通過比較相鄰元素大小來決定是否交換位置 如上圖所示,以一組資料 為例,進行氣泡排序的演算法演示 氣泡排序 c void swap int a,int b void bubblesort vector vi 演算法改進說明 1,對於是否已經是有序排列進行判斷 ...

排序演算法系列 氣泡排序

氣泡排序是是一種比較基礎簡單的演算法。它的原理是通過對比前後的元素大小,將較大的數換到後面的方式來實現排序 舉個例子 假如現在有乙個無序陣列disorder arr 4,2,19,10,1 第一步 取第0個元素4,和第1個元素2 對比,發現4比2大。第二步 交換4與2的索引。即第0個元素為2,第1個...

排序演算法系列 氣泡排序

對陣列array n 其陣列長度為n,元素索引0 n 1,對其進行公升序排序,針對n 10時,可選擇氣泡排序 氣泡排序要點 1.氣泡排序有兩層迴圈,外層迴圈用來計算有多少個數i不再需要比較,記憶體迴圈負責從index0 index n i 1 將相鄰元素進行比較和交換,簡單來說,第一輪排序時,內層比...