排序五 氣泡排序

2021-08-06 02:28:57 字數 689 閱讀 2792

氣泡排序是交換排序的一種,交換排序是兩兩比較待排序的資料,交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。

下圖所示為第一趟排序,資料兩兩交換直到末尾< end,可知完成一趟排序後,最後乙個資料為最小值(降序),則第二趟時到end- -為止。以此迴圈,直到end- ->0,排序完成。

加入標誌性變數enchange 若在某一趟完成後發現沒有資料交換,則無需進行後面的迴圈操作,直接列印。

氣泡排序普通版:

//氣泡排序(普通版)

void bubblesort(int* a, size_t n)

end--;}}

氣泡排序優化版

//氣泡排序(優化)

void bubblesort(int* a, size_t n)

if (exchange == false)//若有序則直接列印,剩下不再遍歷

end--;}}

最好情況:本來就是有序數列,只需遍歷一趟,所以時間複雜度為o(1)

最壞情況:o(n^2)

氣泡排序只有在資料大小需調換時移動,相同資料並不需改變順序

注:插入排序優於氣泡排序

演算法五 氣泡排序

比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。public static voi...

排序演算法 五 氣泡排序(交換排序)

氣泡排序屬於交換排序 基本思想 在待排序數列中,自上而下對相鄰的兩個元素進行比較和調整,小的上冒,大的下沉 時間複雜度 最好情況 正序有序,只需比較n次,o n 最壞情況 反序有序,需要比較 n 1 n 2 1次,故o n n 穩定性 穩定 示例 bubble sort.py def bubble ...

氣泡排序 排序 氣泡排序

既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...