急~~~急~~C语言问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 04:36:00
从键盘输入一个数,然后在一个整型一维数组a[20]中,用折半查找法找出该数是数组中第几个元素的值.如果该数不在数组中,则打印"No found".

#include <stdio.h>

int divide_find(int [],const int ,int,int );
int array[20];
int main()
{
int tmp_a,tmp_result;
for(int i=0;i<20;i++) array[i]=i;

scanf("%d",&tmp_a);
tmp_result=divide_find(array,tmp_a,0,19);
if (tmp_result>-1)
printf("find %d\n",tmp_result);
else
printf("No found\n");
return 0;
}

int divide_find(int a[],const int p ,int start,int end)
{
if(start<=end)
{
if (p==a[(start+end)/2])
return (start+end)/2;
else
{
if (p<a[(start+end)/2])
divide_find(a,p,start,(start+end)/2-1);
else
divide_find(a,p,(start+end)/2+1,end);
}
}
else

return -1;
}

如果不是有序数组的话,用折半法查找有意义么- -!

如果是有序数组,用个递归算法就可以了。数据结构教材上有的

那你先要给数组排序,然后就是算法的问题了

几个 if 不就可以出来了么