c语言一维数组排序插入

#include<stdio.h>
void main()
{
int a[20],i,j,k,n,t,m;//n,数组原个数
printf("数组原个数n=");
scanf("%d",&n);
for(i=0;i<=n-1;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);} //完成输入
for(i=0;i<=n-2;i++)
{ for(j=i+1;j<=n-1;j++)
if(a[i]>=a[j])
{ k=a[i];a[i]=a[j];a[j]=k;}} //排序--------到这里是对的
printf("输入要插入的数m=");
scanf("%d",&m);
for(i=0;i<=n-1;i++)
{ if(a[i]<=m)
{ for(j=n-1;j<=i;i=i-1)
a[j+1]=a[j];
a[i]=n;}}
for(i=0;i<=n;i++)
printf("a[%d]=%d ",i,a[i]); //----------输出a[n]是个随机数,m没有插入
}

第1个回答  2013-06-12
for(i=0;i<=n-1;i++)
{ if(a[i]<=m)
{ for(j=n-1;j<=i;i=i-1)
a[j+1]=a[j];
a[i]=n;}}

改成

for(i=0;i<=n-1;i++)
{ if(a[i]>=m)
{ for(j=n-1;j>=i;j--)
a[j+1]=a[j];
break;

}}
a[i]=m;本回答被提问者采纳