编写程序,要求主函数定义一个有M行N列的二维字符数组,并分别调用各函数实现: 20

(1)从键盘向数组输入n个字符串;(2)用插入排序的方法对n个字符进行升序排列。(3)用二分法在已排序的n个字符上查找某字符串,如果找到则返回字符串所在的行标,若查找失败... (1) 从键盘向数组输入n个字符串;
(2) 用插入排序的方法对n个字符进行升序排列。
(3) 用二分法在已排序的n个字符上查找某字符串,如果找到则返回字符串所在的行标,若查找失败则返回-1。
(4) 输出数组中的n个字符串。
注:主函数中,排序前后的字符串均要输出。
展开
 我来答
wuhouzheng
2009-05-08 · TA获得超过8561个赞
知道小有建树答主
回答量:1010
采纳率:100%
帮助的人:1257万
展开全部
参考一下吧!!

一个已经排好序的数组,输入一个数,利用二分法把这个数从原数组中删除,数组顺序保持不变。如原数组为1,3,5,7,9,11,13,15,17,19,待删除的数为13,则输出为1,3,5,7,9,11,15,17,19。
二分法:每次都是判断中间的数是否满足要求,若满足则删除,若不满足,则把该数当作边界,然后再找中点。例如这一题,第一次的是10个数的中点,为11,发现11<13,则找11-19的中点15,发现15>13,再找11-15的中点13,正好,则删除。
main()
{
int array[10]={1,2,3,5,8,15,20,30,100,200};
int first=0,end=9,middle=(first+end)/2,num,i;
scanf("%d",&num);
while(array[middle]!=num) /*注意这里面的三行代码*/
{
if(array[middle]>num) end=middle;
else first=middle;
middle=(first+end)/2;
}
for(i=0;i<9;i++)
{
if(i>=middle) array[i]=array[i+1];
printf("%d ",array[i]);
}
printf("\n");
}
来源http://www.ban102.com.cn/article/detail.asp?id=197
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式