在一个已经排序的数组中插入一个数据,使插入后的数组仍然有序

各位帮帮忙

第1个回答  2006-11-19
可以用无数种方法...我这里给你介绍一种最简单的,

假设原数n组递增,然后就把待插入数据,从数组的最后一位n开始比较,如果待插入数据小,增前移,继续比较n-1,n-2....1,直到找到小于待插入数据的那一位,然后把待插入数据放在它后面即可.

还有不明白可以给我发短信
第2个回答  推荐于2017-12-16
http://hi.baidu.com/hanxuaiztt/blog/category/%C8%F5%D6%C7%B5%C4%C6%AE%C1%F7%B4%FA%C2%EB
也许你会看到你要的!
这是个先排序,然后插入一个数,再排序的代码
main() {
int a[11];
int i,j,t=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j]) {
t=a[j];
a[j]=a[i];
a[i]=t; }

for(i=0;i<10;i++) printf("%d ",a[i]);
printf("\nPlease Input a num!:");
scanf("%d",&t);
for(i=0;i<10;i++)
if(t<=a[i]){
for(j=10;j>i;j--) a[j]=a[j-1];
a[i]=t;
break; }
if(t>=a[i-1])a[i]=t;
for(i=0;i<11;i++) {
printf("%d ",a[i]); }
}本回答被网友采纳
第4个回答  2020-01-27
http://hi.baidu.com/hanxuaiztt/blog/category/%C8%F5%D6%C7%B5%C4%C6%AE%C1%F7%B4%FA%C2%EB
也许你会看到你要的!
这是个先排序,然后插入一个数,再排序的代码
main()
{
int
a[11];
int
i,j,t=0;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
if(a[i]>a[j])
{
t=a[j];
a[j]=a[i];
a[i]=t;
}
for(i=0;i<10;i++)
printf("%d
",a[i]);
printf("\nPlease
Input
a
num!:");
scanf("%d",&t);
for(i=0;i<10;i++)
if(t<=a[i]){
for(j=10;j>i;j--)
a[j]=a[j-1];
a[i]=t;
break;
}
if(t>=a[i-1])a[i]=t;
for(i=0;i<11;i++)
{
printf("%d
",a[i]);
}
}
相似回答