插入排序(直接插入排序)

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int n,a[110];

void d_insertsort()

{

     for(int i=2;i<=n;i++)

     {

         if(a[i]<a[i-1])

         {

              a[0]=a[i];

              int j;

              for(j=i-1;a[0]<a[j];j--)

              {

                  a[j+1]=a[j];

              }

              a[j+1]=a[0];//刚开始将a[j]=a[0],结果错了,后面才发现有问题。 

         }

     }

}

int main()

{

     while(scanf("%d",&n)!=EOF)

     {

         memset(a,0,sizeof(a));

         for(int i=1;i<=n;i++)

         {

             scanf("%d",&a[i]);

         }

         d_insertsort();

         for(int i=1;i<=n;i++)

         {

             if(i==1)

                 printf("%d",a[i]);

             else

                 printf(" %d",a[i]);

         }

         printf("\n");

     }

     system("pause");

     return 0;

}

你可能感兴趣的:(插入排序)