氣泡排序是非常好理解的一種排序,每一次排序都可以確定乙個元素最終的位置1.對序列從第乙個元素到最後乙個元素遍歷,如果當前元素小於下乙個元素,則交換位置
2.第 i 次遍歷,從第乙個元素到最後 n-i 個元素,如果當前元素小於下乙個元素,則交換位置
3.重複2直至第n-1次遍歷,輸出序列
原序列 9 8 7 4 3 1 2 5 6
第一次遍歷結束 8 7 4 3 1 2 5 6 9
第二次遍歷結束 7 4 3 1 2 5 6 8 9
第三次遍歷結束 4 3 1 2 5 6 7
8 9
第四次遍歷結束 3 1 2 4 5 6
7 8 9
第五次遍歷結束 1 2 3 4 5 6 7 8 9
。。。最後的序列 1 2 3 4 5 6 7 8 9
氣泡排序c語言實現:
氣泡排序最原始**:
void bubblesort(int a, int n) }
} }
氣泡排序改進1:對於上面排序演算法的演示中,當第五次遍歷結束時,第二次遍歷就沒有發生任何的元素交換,那麼則表示說明排序
已經完成,則後面的遍歷就不需要再做了,因此可以設定乙個標誌,當某一次遍歷沒有發生元素交換的時候,就不需要繼續排序了。
氣泡排序改進**:
void
bubblesort2(
inta,
intn)
k--;
} }
氣泡排序改進2:如果乙個陣列在0-i是需要交換的,但是後面i+1-n是有序的不需要交換的(大於前面十個數),此時只需要前面十個數之間交換即可
//氣泡排序3
void
bubblesort3(
inta,
intn)
} } 氣泡排序畢竟是一種效率低下的排序方法,在資料規模很小時,可以採用。資料規模比較大時,最好用其它排序方法。
(**借鑑
時間複雜度:
最好情況:序列本身就是有序的,一次遍歷即可,時間複雜度o(n)
最差情況:序列完全是反序的,需要n次遍歷,時間複雜度o(n2)
平均情況:o(n2)
空間複雜度:只需要乙個儲存空間中轉即可,為o(1)
穩定性:穩定
氣泡排序及其改進演算法
第乙個排序函式 sort1 為氣泡排序的典型實現,第二和第三個為改進後的排序函式 include include define len 20000 double sort1 int int double sort2 int int double sort3 int int int main int ...
氣泡排序及其改進
1.排序思想 氣泡排序也是非常簡單的排序演算法,易於理解。要點 1 也把陣列看作有序和無序部分,初始時將整個陣列視為無序 2 每次遍歷陣列中的無序部分,且兩兩比較,並將兩者中較大的元素置於後面一位,則一趟遍歷完成後,最大元素自然 沉到 無序部分的最後一位 3 減小無序部分的長度,迴圈第二步,直到陣列...
氣泡排序及其改進
氣泡排序作為最經典的演算法,雖然對大資料無用武之地。但是對於少量的資料,我們用氣泡排序,在時間複雜度上也是可以接受的,又因為它實現起來比較簡單,所以也經常的被人們使用。並且可以通過一些方法來改進最原始的氣泡排序,這種改進演算法的思路也有可取之處。前一兩天參加宜搜科技的筆試,就考到了氣泡排序。我當時就...