首页 > 学院 > 开发设计 > 正文

2006华中科技大学机试:直接插入排序及讨论

2019-11-11 05:20:41
字体:
来源:转载
供稿:网友
题目描述:

    对输入的n个数进行排序并输出。

输入:

    输入的第一行包括一个整数n(1<=n<=100)。    接下来的一行包括n个整数。

输出:

    可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。    每组测试数据的结果占一行。

样例输入:
41 4 3 2样例输出:
1 2 3 4 
#include
int main()
{
    int n,i,j,a[100],temp;
    while(scanf("%d",&n)!=EOF)
    {
        for(i=0;i
            scanf("%d",&a[i]);
        for(i=1;i
        {
            if(a[i-1]>a[i])
            {
                 temp=a[i];
                 for(j=i-1;j>=0&&temp
                      a[j+1]=a[j];
                 a[j+1]=temp;
             }
          }
       for(i=0;i
          PRintf("%d ",a[i]);
       printf("/n");
    }
    return 0;
}
     严蔚敏课本中【直接插入排序】代码先须判断1起始情况下是否需要移动
 for(i=1;i<n;i++)          {              if(a[i]<a[i-1])              {                  temp=a[i];                  a[i]=a[i-1];                  for(j=i-2;a[j]>temp&&j>=0;--j)                      a[j+1]=a[j];                  a[j+1]=temp;              }          }
如果不想判断,也可以,而且代码更简洁,如下:
    for(i=1;i<n;++i)        {                 temp=a[i];                 for(j=i;j>0&&temp<a[j-1];j--)                      a[j]=a[j-1];                 a[j]=temp;         }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表