输入五个数字并比较大小后从小到大输出

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;
	
}

看起来可能有一丢丢的乱,不过是有规律的算法。

如果小伙伴哪里不懂可以在评论区里面留下问题哦,我经常在线的,可能有时候忙于作业没有在线哦

你可能感兴趣的:(大一刷的部分题目,c语言)