时空复杂度最浪费资源的,但是最容易理解
// 10 9+8 +7 +1 0(1) 0(n*N)
// 100 99+ 98+1 n(n-1)/2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main() {
time_t ts;
unsigned int num = time(&ts);
srand(num);//随机数种子
#define N 10
int a[N];
for (int i = 0; i < N; i++) {
a[i] = rand() % 300;//创建随机数组
printf("\n%d", 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++) {
//i=0,1,2
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;// i = 0最大值移到a[0]
}
}
{
printf("\n");
for (int i = 0; i < N; i++) {
printf(" %d ", a[i]);
}
printf("\n");
}
system("pause");
}