这是一个二进制搜索程序。但是,如果我将排序后的数组作为输入,程序将始终显示NOT FOUND作为输出。
我是初学者,所以我尝试删除了if语句
void binary(int [],int,int,int);
void main()
{
int i,a[100],n,beg,end,val;
printf("enetr the size :\n");
scanf("%d",&n);
printf("enter the elements :\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("enter the value to be search");
scanf("%d",&val);
beg=0;
end=n-1;
binary(a,beg,end,val);
}
void binary(int a[],int end,int beg,int value)
{
int i,mid,count=0;
while(beg<=end)
{
mid=((beg+end)/2);
if(a[mid]==value)
{
printf("the value is find at the %d position ",mid);
count=1;
}
if(value<a[mid])
end=mid-1;
else
beg=mid+1;
}
if(count==0)
printf("NOT FOUND");
}
尽管有输入,但显示为未找到
答案 0 :(得分:6)
您在函数中错误地传递了值。
在函数定义中:
void binary(int a[],int end,int beg,int value)
您致电binary(a,beg,end,val);
,但是end
是第二个电话。
传递值时,您将传递beg
值代替end
。因此while循环未执行。