F.排队
排序
空间限制:16MB时间限制:1s总提交数:603通过率:35.32%题目来源: 站点添加贡献人: Aqua
输入5个人的身高,请你输出他们按照从矮到高的排序结果
多组输入,EOF表示结束
每一组输入将会输入5个正整数,分别表示5个人的身高(整数形式表示)
身高的范围在 100 - 200之间
对于每一组输入,在新的一行输出5个人按照从矮到高的排序结果
160 155 170 153 180
161 162 163 164 165
153 155 160 170 180
161 162 163 164 165
有两种解法,一种是冒泡排序,一种是暴力解决问题的方法,
冒泡排序的方法就是较慢,第二种解法的速度会快一些,
冒泡排序不能通过,但第二种是可以通过测试的方法
题目来源 广东技术师范大学在线判题网站http://www.gpnuacm.com/#/home
第一种,冒泡排序法
#include
int main()
{
int a[6];
int t,i,j;
i = 0; j = 0;
while(1)
{
for(i=0;i<5;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<5;i++)
{
t =0;
for(j=0;j<4-i;j++)
{
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(i=0;i<5;i++)
{
printf("%d ",a[i]);
}
}
return 0;
}
上面的方法是存在漏洞的方法,发现的问题的小伙伴可以在评论区留言,我有时间会去进行改进
第二种解法,暴力解题法
#include
int main()
{ int a,b,c,e,r;
int i,j,t;
while(scanf("%d %d %d %d %d",&a,&b,&c,&e,&r)!=EOF)
{
if(a>b)
{
t = a;
a = b;
b = t;
}
if(a>c)
{
t = a;
a = c;
c = t;
}
if(a>e)
{
t = a;
a = e;
e = t;
}
if(a>r)
{
t = a;
a = r;
r = t;
}
if(b>c)
{
t = b;
b = c;
c = t;
}
if(b>e)
{
t = b;
b = e;
e = t;
}
if(b>r)
{
t = b;
b = r;
r = t;
}
if(c>e)
{
t = c;
c = e;
e = t;
}
if(c>r)
{
t = c;
c = r;
r = t;
}
if(e>r)
{
t=e;
e=r;
r=t;
}
printf("%d %d %d %d %d\n",a,b,c,e,r);
}
return 0;
}
看起来可能有一丢丢的乱,不过是有规律的算法。
如果小伙伴哪里不懂可以在评论区里面留下问题哦,我经常在线的,可能有时候忙于作业没有在线哦