我正在使用二进制搜索算法在预定义数组中找到一个数字,但是如果我输入数组中的值我得到了正确的答案,但在输入的数值不是像101,100,121这样的数组我刚刚得到数字10作为输出
#include <stdio.h>
int binarysearch(int A[],int key);
int main()
{
int key,answer;
int A[10]={0,5,8,10,12,14,15,18,19,21};
scanf("%d",&key);
answer=binarysearch(A,key);
if (answer!=-1)
{
printf("%d",answer);
}
else
{
puts("NOT FOUND");
}
}
int binarysearch(int A[],int key)
{
int i;
int h,l,m;
h=10;
l=0;
while(l<=h)
{
m=(h+l)/2;
if(A[m]==key)
{
return m;
}
else if(key<A[m])
{
h=m-1;
}
else
{
l=m+1;
}
}
return -1;
}
答案 0 :(得分:0)
更改条件
while(l<=h)
到
while ( l < h )
并更改此代码段
else if(key<A[m])
{
h=m-1;
}
以下方式
else if(key<A[m])
{
h = m;
}
该功能可以定义为
int binarysearch( const int A[], int n, int key )
{
int l = 0;
int h = n;
while ( l < h )
{
int m = ( h + l ) / 2;
if ( A[m] == key )
{
return m;
}
else if( key < A[m] )
{
h = m;
}
else
{
l = m + 1;
}
}
return -1;
}
并称之为
answer=binarysearch( A, 10, key );