蓝桥杯ACM简单题-交换瓶子
1.问题描述
有N个瓶子,编号 1 ~ N,放在架子上,要求每次拿起2个瓶子,交换它们的位置,依照大小排序。
2.算法分析
现任这是排序问题,在此使用寻找排序法
3.输入
请输入要排序瓶子的个数:3
请输入您的数,且用空格或回车隔开每个数: 532 545 123
4输出
123 532 545
代码
#include <stdio.h>
int main()
{
int n, i, max, save, flag, nsave;
printf("请输入要排序瓶子的个数:");
n = (getchar() - '0');
//printf("%d",n);
int a[n];
printf("请输入您的数,且用空格或回车隔开每个数:");
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
if (a[i] == ' ' || a[i] == '\n')
{
continue;
}
}
for (nsave = n; nsave > 0; nsave--)
{
max = a[nsave - 1];
flag = nsave - 1;
for (i = 0; i < nsave; i++)
{
if (a[i] > max)
{
max = a[i];
flag = i;
}
}
save = a[flag];
a[flag] = a[nsave - 1];
a[nsave - 1] = save;
}
for (i = 0; i < n; i++)
printf("%d ", a[i]);
}