C語言氣泡排序演算法

2020-07-16 10:04:30
用氣泡排序法對任意輸入的 10 個數按照從小到大的順序進行排序。

實現過程:

(1) 通過兩個 for 迴圈實現氣泡排序的全過程,外層 for 迴圈決定氣泡排序的趟數,內層 for 迴圈決定每趟所進行兩兩比較的次數。

(2) 程式程式碼如下:
#include <stdio.h>
int main()
{
    int i,j,t,a[11];    //定義變數及陣列為基本整型
    printf("請輸入10個數:n");
    for(i=1;i<11;i++)
        scanf("%d",&a[i]);    //從鍵盤中輸入10個數
    for(i=1;i<10;i++)    //變數i代表比較的趟數
        for(j=1;j<11-i;j++)    //變最j代表每趟兩兩比較的次數
            if(a[j]>a[j+1])
            {
                t=a[j];    //產利用中間變童實現兩值互換
                a[j]=a[j+1];
                a[j+1]=t;
            }
            printf("排序後的順序是:n");
            for(i=1;i<=10;i++)
                printf("%5d",a[i]);    //將胃泡排序後的順序輸出
        printf("n");
    return 0;
}

執行結果:

請輸入10個數:
66 32 23 45 25 5 15 69 46 37
排序後的順序是:
    5   15   23   25   32   37   45   46   66   69

技術要點:

本範例要求用冒泡法對 10 個數由小到大進行排序,冒泡法的基本思路是,如果要對 n 個數進行氣泡排序,那麼要進行 n-1 趟比較,在第 1 趟比較中要進行 n-j 次兩兩比較,在第 j 趟比較中要進行 n-j 次兩兩比較。從這個基本思路中就會發現,趟數決定了兩兩比較的次數,這樣就很容易將兩個 for 迴圈聯絡起來了。