排序之氣泡排序

2022-09-17 12:03:09 字數 993 閱讀 8799

#include/*

標頭檔案*/

#define m 100 /*定義常量*/

int r[m]; /*

定義陣列

*/int

main()

printf(

"before sort numbers:\n");

for(i=1;i<=n;i++)/*

列印排序之前的陣列元素

*/ printf("\n

");for(i=1;i<=n-1;i++)/*

排序趟數

*/ }

}printf(

"after sort numbers:\n");

for(i=1;i<=n;i++) /*

列印氣泡排序之後序列

*/

}

view code

思想:首先是將第1個數和第2個數進行比較,若為逆序(r[1]>r[2]),則交換這兩個數的位置,然後比較第2個數和第3數,以此類推,直至第n-1個數和第n個數進行比較為止.這個過程稱為第一趟氣泡排序,排序結果是最大的數被排在了最後。即r[n].

接著進行第二趟氣泡排序,即對前n-1個數再次進行兩兩比較,若為逆序則交換,排序結果是第二大的數被排在倒數第二。即r[n-1].然後進行第三趟氣泡排序,對前n-2個數進行同樣的操作,以此類推。

比如:10個數進行氣泡排序,必須進行9趟排序,每一趟中兩個數比較次數是不相同的,第一趟比較10-1=9次(10為許排序的數目,1為該趟的趟數),第二趟要比較10-2=8次,以此類推,第i趟要比較的次數=10-i.

如有n個數,則要進行n-1趟排序(由外迴圈控制),第i趟兩數之間的比較要進行n-i次(由內迴圈控制).

氣泡排序速記口訣(降序):

n個數字來排序,兩兩相比大靠前,

外層迴圈n-1,內層迴圈n-1-i.

如果要公升序,

只要把程式中的if (a[j] < a[j + 1])

小於號換成大於號就行了

排序之氣泡排序

例 將5個數字進行從大到小排序後輸出。輸入 35 99 18 12 76 輸出 99 76 35 18 12 對於例,氣泡排序大致的思路就是一趟一趟地迴圈比較,每一次迴圈的目的都是將未排序的數字中最小的數字移動到末尾。如 第一趟 xx xx xx xx 12 第二趟 xx xx xx 18 12 第...

排序之 氣泡排序

先科普一下到底什麼是氣泡排序 氣泡排序到底能幹嘛?氣泡排序 bubble sort 是一種 電腦科學領域的較簡單的 排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字...

排序之氣泡排序

氣泡排序是一種交換排序。什麼是交換排序呢?交換排序 兩兩比較待排序的關鍵字,並交換不滿足次序要求的那對數,直到整個表都滿足次序要求為止。演算法思想它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成...