目標:將陣列按從小到大排序
氣泡排序有兩種比較方法,一種是從前向後比較,一種是從後向前比較。
從前向後排序舉例
初始: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...