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

来源:百度知道 编辑:UC知道 时间:2024/09/23 18:23:57
(1) 从键盘向数组输入n个字符串;
(2) 用插入排序的方法对n个字符进行升序排列。
(3) 用二分法在已排序的n个字符上查找某字符串,如果找到则返回字符串所在的行标,若查找失败则返回-1。
(4) 输出数组中的n个字符串。
注:主函数中,排序前后的字符串均要输出。

参考一下吧!!

一个已经排好序的数组,输入一个数,利用二分法把这个数从原数组中删除,数组顺序保持不变。如原数组为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");
}
来源