例60:C語言實現用選擇法對10個整數排序。解析:選擇排序思路以下,設有10個元素a[1]~a[10],將a[1]與a[2]~a[10],若a[1]比a[2]~a[10]都小,則不進行交換,即無任何操做。若a[2]~a[10]中有一個以上比a[1]小,則將其中最大的一個,與a[1]交換,此時a[1]中存放了10箇中最小的數。依次類推,共進行9輪比較,a[1]~a[10]就已按由小到大的順序存放了。 總體代碼邏輯爲了讓讀者更加清晰,小林這裏分爲四部分:第一部分 鍵盤輸入10個數:for(i=1;i<=10;i++)//依次鍵盤錄入10個數據 { printf("array[%d]=",i-1);//數組下標從0開始 scanf("%d",&array[i]); }第二部分 輸出鍵盤錄入的10個數:for(i=1;i<=10;i++)//將鍵盤錄入的10個數原樣輸出 { printf("%5d",array[i]); }第三部分 排序邏輯:for(i=1;i<=9;i++) { min=i;//把第一個數做爲最小的 for(j=i+1;j<=10;j++) { if(array[min]>array[j])//判斷大小,小的爲min { min=j; } } temp=array[i]; //大小交換 array[i]=array[min]; array[min]=temp; }第四部分 排序後的10個數:for(i=1;i<=10;i++)//輸出排序後的10個數 { printf("%5d",array[i]); }源代碼演示:#include<stdio.h>//頭文件 int main()//主函數 { int i,j,min,temp,array[11];//定義整型變量和數組 printf("輸入數據:\n");//提示語句 for(i=1;i<=10;i++)//依次鍵盤錄入10個數據 { printf("array[%d]=",i-1);//數組下標從0開始 scanf("%d",&array[i]); } printf("\n");//換行 printf("原樣輸出:\n");//提示語句 for(i=1;i<=10;i++)//將鍵盤錄入的10個數原樣輸出 { printf("%5d",array[i]); } printf("\n");//換行 for(i=1;i<=9;i++) { min=i;//把第一個數做爲最小的 for(j=i+1;j<=10;j++) { if(array[min]>array[j])//判斷大小,小的爲min { min=j; } } temp=array[i]; //大小交換 array[i]=array[min]; array[min]=temp; } printf("排序輸出:\n");//提示語句 for(i=1;i<=10;i++)//輸出排序後的10個數 { printf("%5d",array[i]); } printf("\n");//換行 return 0;//主函數返回值爲0 }編譯運行結果以下:輸入數據: array[0]=1 array[1]=4 array[2]=7 array[3]=9 array[4]=4 array[5]=3 array[6]=7 array[7]=9 array[8]=5 array[9]=3 原樣輸出: 1 4 7 9 4 3 7 9 5 3 排序輸出: 1 3 3 4 4 5 7 7 9 9 -------------------------------- Process exited after 8.036 seconds with return value 0 請按任意鍵繼續. . .