資料結構之排序 氣泡排序

2021-10-05 09:47:28 字數 987 閱讀 2633

簡介:

氣泡排序屬於交換排序的一種。

交換排序就是根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置。交換排序的演算法有很多,著重需要掌握的有氣泡排序和快速排序。

基本思想:

長為n的序列表,從前往後(或從後往前)兩兩比較相鄰元素的值,若為逆序,則交換他們,知道所有序列比較完。每一趟冒泡都會將參與的元素的最小值(或者最大值放置序列的終端),下一次比較,序列就減少乙個元素,直至最終排序完成。

**示例:

void

bubblesort

(int a,

int n)}if

(falg == false)

}}

效能分析空間效率:僅使用了常數個輔助單元,因而空間複雜度為 o(1);

時間效率:

最好的情況下(初始序列有序),第一趟冒泡 flag 為 false,直接跳出迴圈,比較次數為 n-1,移動次數為0,時間複雜度為 o(n);

最壞的情況下(初始序列為逆序),需要進行 n-1 趟排序,第 i 趟排序需要進行 n-i 次關鍵字的比較,每次都必須移動元素3次來交換位置。

比較次數(上)和移動次數(下)如下所示:

氣泡排序在最壞的情況下時間複雜度為 o(n²)。

所以氣泡排序的平均複雜度也為 o(n²)。

穩定性

氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不會再交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

資料結構 排序之氣泡排序

資料結構 排序 可以通過理解各個排序演算法的不變性來加深對演算法的理解 氣泡排序bubblesort 不變性 out右邊的所有資料項都是有序的。out為outer loop外迴圈體中的變數。the point for out arrlen 1 out 1 out the code public cl...

資料結構之氣泡排序

2.編寫乙個氣泡排序的演算法,並且在main函式中驗證其功能已實現 氣泡排序 bubble sort 的基本思想,設想排序r 1 到r n 垂直放置,將記錄 r i 看作是重量為r i key的氣泡 根據氣泡不能在重氣泡之下的原則,從下往 上掃瞄陣列r,凡違反原則的輕氣泡,就使其向上 飄浮 如此反覆...

資料結構之氣泡排序

基本思想 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。第一次比較排序的結果 會把其中最大的資料排到最大的索引處 第二次比較排序後的結果 因為第一次...