氣泡排序的優化及時間複雜度分析

2021-08-18 11:28:17 字數 617 閱讀 8375

#include #include #include using namespace std;

void bubblesort1(vectora)

} }for (auto c : a) }

#if 0

氣泡排序屬於交換排序類

改進後,遍歷第n遍時如果資料沒發生改變,則直接省略之後

多餘的比較過程

時間複雜度分析:

最好情況:也就是排列前,表本身就是順序的,則根據改進後

的方法需要進行n-1次比較,沒有資料交換,時

間複雜度為o[n](注意是改進後的方法!!!)

最壞情況:也就是排列前,表是逆序的,則需要1+2+3+...+n-1

次,也就是n(n-1)/2次 時間複雜度為o[n^2]

#endif

void bubblesort2(vectora)

} }for (auto c : a) }

int main(int argc,char *argv)

; vectorb = ;

bubblesort2(a);

bubblesort2(b);

return 0;

}

排序演算法 氣泡排序的時間複雜度分析

氣泡排序演算法是一種基於比較的排序演算法,每次冒泡過程,都會有乙個資料確定位置。經過n次冒泡後,就有n個資料確定了位置。如圖所示,對陣列 4,5,6,3,2,1 進行氣泡排序。氣泡排序演算法 param arr param n public static void bubblesort int ar...

氣泡排序的時間複雜度

氣泡排序是一種用時間換空間的排序方法,最壞情況是把順序的排列變成逆序,或者把逆序的數列變成順序。在這種情況下,每一次比較都需要進行交換運算。舉個例子來說,乙個數列 5 4 3 2 1 進行冒泡公升序排列,第一次大迴圈從第乙個數 5 開始到倒數第二個數 2 結束,比較過程 先比較5和4,4比5小,交換...

各種排序演算法 c 及時間複雜度分析

編譯平台 vs2010 include stdafx.h int tmain int argc,tchar argv int j,tmp for int i 1 i 8 i a j 1 tmp for int i 0 i 8 i printf n system pause return 0 incl...