氣泡排序演算法詳解

2021-07-30 09:17:25 字數 1652 閱讀 2034

目標:將陣列按從小到大排序

氣泡排序有兩種比較方法,一種是從前向後比較,一種是從後向前比較。

從前向後排序舉例

初始:4    5    2    1

第一趟:(4比5小,不交換)4    52    1

(5比2大,交換)    42    51

(5比1大,交換)    4    21    5

第二趟:(4比2大,交換)2    41    5

(4比1大,交換)    21    45

第三趟:(2比1大,交換)1    2

4    5

演算法實現(已經過執行測試)

void bubblesort(int a,int n)

} }}

從後向前排序舉例

初始:4    5    2    1

第一趟:(1比2小,交換)    4    51    2

(1比5小,交換)    41    52

(1比4小,交換)1    45    2

第二趟:(2比5小,交換)    1    42    5

(2比4小,交換)    12    45

第三趟:(5比4大,不交換)1    24    5

演算法實現(已經過測試執行)

void bubblesort(int a,int n)

} }}

演算法效能

時間複雜度:最好情況,陣列本身有序,不必進行交換操作,但是比較操作仍會進行,o(n2);

最壞情況,陣列逆序,o(n2);

平均情況,o(n2)。

空間複雜度:僅使用了常數個輔助單元,因此空間複雜度為o(1)。

穩定性:穩定。

其他:氣泡排序所產生的有序子串行一定是全域性有序的。每趟冒泡結束之後,都會有乙個元素被放到最終位置上。

改進如果陣列初始狀態已經有序,或者進行若干趟冒泡之後已經有序,則不必進行不必要的比較操作。

改進後的演算法(以從前向後冒泡為例):

void bubblesort(int a,int n)

} if(flag==flase) //本趟冒泡沒有發生資料交換,說明陣列已經有序

return;

}}

改進後的時間複雜度

最好情況,陣列本身有序,o(n);

最壞情況,陣列逆序,o(n2);

平均情況,o(n2)。

氣泡排序演算法 C 氣泡排序演算法排序詳解

氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...

排序演算法 氣泡排序詳解

氣泡排序的原理非常簡單,它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。比較相鄰的元素。如果第乙個比第二個大 公升序 就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最...

氣泡排序演算法詳解

氣泡排序是我們平時生活中常用的,就是挨個比大小,所以相對其它演算法比較好理解.氣泡排序就是小的往上冒或者大的往上冒,自己畫個圖就能明白了.步驟如下 假設從小到大排序 1.inum n 是待排序的陣列 3 2 4 1 5 2.從第乙個inum 0 3開始比,找比第乙個小的,交換兩者的值inum 0 2...