C语言数据结构之 简单选择排序
算法:设所排序序列的记录个数为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 }
结果