前一章講過的簡單桶排序有很多缺陷,它只能給整數排序,對付浮點數就無能為力了。如果想對像3.5, 5.66, 7.43, 6.9 這些小數排序,可以用氣泡排序法(bubble sort)。氣泡排序法的基本思想是:每次比較兩個相鄰的元素,如果順序錯誤就交換它們的位置。
例如我們對66 77 99 100 101 45 這6個數按從大到小的順序排序,也就是越小的數越靠後(好像這是一句廢話),但這是很重要的一句話。現在開始排序,66比77小,所以交換位置,此時順序是7766 99 100 101 45,繼續比較66比99小,所以交換位置77 9966 100 101 45,一次類推知道比較到77 99 100 10166 45,這時66比45大,所以無需交換。第一輪排序結束,把數列中最小的數放到了隊尾。第二輪排序又是從第乙個元素開始按照同樣的規律吧第二小的數向後移,只到進行到第n-1輪。為什麼n個數只執行n-1輪呢?你想啊,執行完n-1輪的時候除了第n個數還沒歸位,其他都已經跟別人比過並找到適合自己的位置了。所以最後一輪就沒有必要進行了。
下面貼出c++原始碼:
#include using namespace std;
int main()
for(i=1;i<=n-1;i++) //此處i不能為賦0;否則第0次迴圈時內迴圈a[j+1]會溢位
{for(j=0;j
氣泡排序演算法 C 氣泡排序演算法排序詳解
氣泡排序是最簡單的排序方法,理解起來容易。雖然它的計算步驟比較多,不是最快的,但它是最基本的,初學者一定要掌握。c 氣泡排序演算法的例項源 一些排序方法的 集錦,該函式模板使用冒泡法對集合元素進行排序,引數說明 collection 集合物件,集合物件必須提供 操作。element 集合元素,該引數...
C語言排序演算法 氣泡排序演算法
氣泡排序是一種交換排序,基本思想是 相鄰兩兩比較,若反序則交換。定義交換操作函式 1 void swap int p,int i,intj 2 基本排序演算法 思想 i 0時,p i 依次與後面的元素比較,如果後面的元素小,則交換位置,繼續比較,直到將最小的元素交換到第乙個位置,再從第二個開始與後面...
c 氣泡排序演算法
基本思想 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。第1趟 首先比較第1個和第2個數,將小數放前,大數放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。至此第一趟結束,將最大的數放到了最後。第2趟 仍從第一對數開始比較 因為可能由於...