插入排序 代码语言: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;}

浙公网安备 33010602011771号