选择排序算法:
<span style="white-space:pre"> </span>#define N 10
time_t ts;
unsigned int data = time(&ts);
srand(data);
int a[N];
for (size_t i = 0; i < N; i++)
{
a[i] = rand() % 100 + 50;
printf("%d ", a[i]);
}
//选择排序
int kmax = 0;//记录最大值下标
for (size_t i = 0; i < N - 1; i++)
{
kmax = i;//记录最大值下标
for (size_t j = i + 1; j < N; j++)//第一轮比完第一个后 第一个就无需再比
{
if (a[j]>a[kmax])
{
kmax = j;//记录下标 赋值下标
}
}
if (kmax != i)
{
int tmp = a[i];
a[i] = a[kmax];
a[kmax] = tmp;
}
else
{
a[kmax] = a[i];
}
}
printf("\n最小值:%d 次小值%d\n大到小排序后:\n", a[kmax], a[kmax - 1]);
for (size_t i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
测试结果:
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接