C語言選擇排序演算法

2020-07-16 10:04:30
用選擇排序法對一組資料由小到大進行排序,資料分別為 526、36、2、369、56、45、78、92、125、52。

實現過程:

(1) 程式中用到T兩個 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<=9;i++)
        for (j=i+1;j<=10;j++)
            if(a[i]>a[j])    //如果前一個數比後一個數大,則利用中間變數t實現兩值互換
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    printf("排序後的順序是:n");
    for(i=1;i<=10;i++)
        printf("%5d", a[i]);    //輸出排序後的陣列
    printf("n");
    return 0;
}

執行結果:

請輸入10個數:
526 36 2 369 56 45 78 92 125 52
排序後的順序是:
    2   36   45   52   56   78   92  125  369  526

技術要點:

選擇排序的基本演算法是從待排序的區間中經過選擇和交換後選出最小的數值存放到 a[0] 中,再從剩餘的未排序區間中經過選擇和交換後選出最小的數值存放到 a[1] 中,a[1] 中的數位僅大於 a[0],依此類推,即可實現排序。