算法:設所排序序列的記錄個數為n。i取1,2,…,n-1,從所有n-i+1個記錄(Ri,Ri+1,…,Rn)中找出排序碼最小的記錄,與第i個記錄交換。執行n-1趟 后就完成了記錄序列的排序。
編譯器:VS2013
代碼
1 #include "stdafx.h" 2 #include<stdlib.h> 3 #include<stdio.h> 4 5 //函數聲明 6 7 void SelectSort(int a[], int n); //簡單選擇排序(從小到大) 8 9 int main() 10 { 11 int i, n, a[100]; 12 printf("請輸入需要排序元素的個數:"); 13 scanf_s("%d", &n); 14 printf("隨機生成的數組為:"); 15 for (i = 1; i <= n; i++) 16 { 17 a[i] = rand() % 100 + 1; 18 printf("%d ", a[i]); 19 } 20 a[i] = '\0'; 21 printf("\n"); 22 23 SelectSort(a, n); 24 25 } 26 27 //簡單選擇排序(從小到大) 28 void SelectSort(int a[], int n) 29 { 30 int i = 1, j, k, min; 31 for (min = a[1]; i <= n; i++) 32 { 33 k = i; 34 for (j = i; j <= n; j++) 35 if (a[j] < a[k]) 36 k = j; 37 if (k != i) 38 { 39 min = a[k]; 40 a[k] = a[i]; 41 a[i] = min; 42 } 43 } 44 printf("\n簡單選擇排序后的結果(從小到大):"); 45 for (i = 1; i <= n; i++) 46 printf("%d ", a[i]); 47 printf("\n\n"); 48 }
結果