插队问题
时间: 1ms 内存:128M
描述:
计186班有十位同学,学号为一到十,现在要求他们按学号排队,可是有一个人迟到了,要求让先到的九个人排好队,再让最后迟到的那个人按学号插进去。
输入:
先输入九个整数n(1<=n<=10),再输入一个整数m(1<=m<=10且m不等于n)
输出:
输出有两行,第一行让九个n按从小到大的顺序排列,第二行让m按大小插入九个数中并输出。
示例输入:
10 2 5 9 6 1 3 4 7
8
示例输出:
1 2 3 4 5 6 7 9 10
1 2 3 4 5 6 7 8 9 10
提示:
参考答案(内存最优[1120]):
#include <stdio.h>
int main()
{
int a[10]={1,4,9,13,16,19,28,60,98};
int i,j;
int temp1,temp2;
int number;
scanf("%d",&number);
if(number>a[8])
{
a[9]=number;
}
else
{
for(i=0;i<10;i++)
{
if(a[i]>number)
{
temp1=a[i];
a[i]=number;
for(j=i+1;j<10;j++)
{
temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
for(i=0;i<10;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}
参考答案(时间最优[1]):
#include<stdio.h>
int main()
{
int a[10],i,j,m;
for(i=0;i<9;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&a[9]);
for(i=0;i<8;i++)
{
for(j=0;j<8-i;j++)
{
if(a[j]>a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
}
for(i=0;i<9;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]>a[j+1])
{
m=a[j];
a[j]=a[j+1];
a[j+1]=m;
}
}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。