设有一个已按由小到大排好序的数组,今输入一个整数,要求按原来排序的规律将它插入到数组中。:

设有一个已按由小到大排好序的数组,今输入一个整数,要求按原来排序的规律将它插入到数组中。(50分)输入数据:01122335566778899100插入数据:44... 设有一个已按由小到大排好序的数组,今输入一个整数,要求按原来排序的规律将它插入到数组中。(50分)
输入数据:0 11 22 33 55 66 77 88 99 100 插入数据:44
展开
 我来答
veket_linux
2011-04-29 · TA获得超过4092个赞
知道大有可为答主
回答量:3809
采纳率:0%
帮助的人:4568万
展开全部
#include <stdio.h>
int main()
{
int array[11] = {0,11,22,33,55,66,77,88,99,100};
int n;
int i;
int p;

printf("orignal array is:\n");
for(i=0;i<11;i++)
{
printf("%4d",array[i]);
}

printf("\ninput insert number n:\n");
scanf("%d",&n);

/*
假定插入数和原数组的数不存在相等的情况;
插入位置在中间,不考虑插入位置在头尾的情况;
请自行思考插入位置在头或尾的情况;

基本思想:
1.循环比较,找到插入位置
2.把从插入位置起,后面的所有元素整体向后移动
一个元素的位置;
(整体向后移动如何实现?
最后一个向后移,给倒数第二个向后移腾出位置;
倒数第二个向后移,移到原先最后一个的位置,
给倒数第三个向后移腾出位置;
...... 如此循环,为插入腾出了插入位置
)
3.插入数放入插入位置
*/
for(i=0;i<9;i++)
{
if(n>array[i] && n< array[i+1])
{
p = i+1;
break;
}
}
i = 10;
while(i!=p)
{
array[i] = array[i-1];
i--;
}
array[i] = n;

printf("new array is:\n");
for(i=0;i<11;i++)
{
printf("%4d",array[i]);
}
return 0;
}

运行效果
C:\Documents and Settings\Owner\桌面>test.exe
orignal array is:
0 11 22 33 55 66 77 88 99 100 0
input insert number n:
44
new array is:
0 11 22 33 44 55 66 77 88 99 100
C:\Documents and Settings\Owner\桌面>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
乌雅轶00s
2011-04-30
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
二分法。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式