經典排序演算法之 氣泡排序

2021-08-21 22:26:58 字數 827 閱讀 9286

int a=;
對於上面的乙個陣列,氣泡排序的原理是:

依次比較相鄰元素的大小,前乙個元素若比後乙個元素大,則交換兩個元素的位置,給人的感覺是大的元素像氣泡一樣往上冒,也可以把小的元素往上冒。

比較過程如下(最大值向上冒):

陣列初始狀態:

第一次比較後:,5不比7大不交換位置

第二次比較後:,7和3比較,交換位置

第三次比較後:,7和2比較,交換位置

第四次比較後:,7和4比較,交換位置

第五次比較後:,7和9比較,位置不動

第六次比較後:,9和6比較,交換位置

第一輪排序過後,最大值9被排在了最後的位置,下次排序的時候只需要排這個陣列即可。核心**如下:

for (int i=0;ia[j+1])

}}

這裡有幾個難點需要說明一下:

1.外層迴圈的次數--i的邊界怎麼確定?

本例中的陣列長度較小,可以手動推演一下即可得出,但是如果陣列的長度很長,該如何得出?答案就在問題中,既然長度很長,那麼我們縮小這個長度,以乙個包含三個元素的陣列作為參照得出這個外層迴圈的邊界值。例如:

int a =

陣列的長度是3,我們只需要進行2輪迴圈就可以得出,那麼這個i邊界值的規律就是:i這其實是一種"降維思維",高維度的問題降個維度去思考會把問題簡單化。傳音手機在非洲市場的成功不就是典型嗎?

2.內層比較次數怎麼確定?

這個和上乙個問題是一樣的思路,做一下簡單的推理即可得出,這裡不做詳述。

經典排序演算法之氣泡排序

好記性不如爛筆頭。氣泡排序屬於交換排序,交換排序的基本思想是 兩兩比較待排序記錄的關鍵字,當兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。include using namespace std void printpro int input,int len void swap int fi...

經典演算法之氣泡排序

author s email wardseptember gmail.com date 2017.12.4 氣泡排序 氣泡排序是通過一系列的 交換 動作完成的。首先第乙個關鍵字和第二個關鍵字比較,如果第乙個大,則二者交換,否則不交換 然後第二個關鍵字和第三個關鍵字比較,如果第二個大,則二者交換,否則...

經典演算法之氣泡排序

1 演算法思想 取第i元素和第i 1個元素做比較,假如第i 1個元素大於第i個元素,則交換兩個元素。一直到待排序的集合是有序的為止。假設待排序的元素集合 5 4 3 1 第一次冒泡後的序列 4 3 1 5 第二次冒泡的序列 3 1 4 5 第三次冒泡後的序列 1 3 4 5 n元素序列一共需要比較n...