选择法—排序(一维数组) #include<stdio.h> #include<stdlib.h> void main() { time_t ts; unsigned int data = time(&ts); srand(data);//创建随机数种子 #define N 30 int a[N]; for (int i = 0; i < N; ++i) { a[i] = rand() % 200;//创建随机数组 printf("%d\n", a[i]); } { printf("\n"); for (int i = 0; i < N; ++i) { printf("%d ", a[i]); } printf("\n"); } int kmax = 0;//记录最值的下标 for (int i = 0; i < N - 1;++i)//最后一个不需要比较,所以N-1 { kmax = i;//记录最大数的下标 for (int j = i + 1; j < N; ++j)//遍历剩下的数 { if (a[j] > a[kmax]) { kmax = j;//循环,记录最大数的下标 } } if (kmax != i) { int temp = a[kmax];//存放剩下的最大数 a[kmax] = a[i]; a[i] = temp;//变换位置 } //查看每一步的状态 { printf("\n"); for (int i = 0; i < N; ++i) { printf("%d ", a[i]); } printf("\n"); } } system("pause"); }