插队问题

时间: 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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。