插入排序 代码语言:c

插入排序

时限:1000ms 内存限制:10000K  总时限:3000ms

描述:

给定一个已经排序好数组,要求输入一个数后,按原来的排序规律插入到原数组中.

输入:

输入一个整数n(n<10000),代表已经排序好的数组大小,接下来n个整数为已排序数组.最后输入要插入的整数m.

输出:

输出插入以后的数组,每个数占一行,共n+1行.

输入样例:

5
2
3
4
5
6
1

输出样例:

1
2
3
4
5
6

提示:

 

来源:

代码:

#include <stdio.h>

#include <stdlib.h>
int *a;
void Insertsort(int n)

{    int i,k;   

if(a[1]>a[2])       

k=1;   

else     

 k=2;   

if(k==1)   

{       

a[0]=a[n+1];       

for(i=n;i>=1&&a[i]<a[0];i--)     

  {         

  if(a[i]<a[0])             

a[i+1]=a[i];       

}       

a[i+1]=a[0];   

}   

if(k==2)   

{       

a[0]=a[n+1];       

for(i=n;i>=1&&a[i]>a[0];i--)       

{            if(a[i]>a[0])              a[i+1]=a[i];        }     

  a[i+1]=a[0];   

}

}
int main()

{    int n,i;   

scanf("%d",&n);   

a=(int *)malloc((n+1)*sizeof(int));   

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

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

Insertsort(n);   

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

{       

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

}   

return 0;}

posted @ 2011-05-25 18:08  itbird  Views(1832)  Comments(0)    收藏  举报