C 二进制搜索中的错误输出
我使用二进制搜索算法在预定义数组中查找一个数字,但是如果我在数组中输入值,我会得到正确的答案,但是在输入一个值而不是像101100121这样的数组时,我只会得到数字10作为输出C 二进制搜索中的错误输出,c,function,sorting,binary-search,C,Function,Sorting,Binary Search,我使用二进制搜索算法在预定义数组中查找一个数字,但是如果我在数组中输入值,我会得到正确的答案,但是在输入一个值而不是像101100121这样的数组时,我只会得到数字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",&
#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;
}
#包括
int二进制搜索(int A[],int键);
int main()
{
int键,答案;
int A[10]={0,5,8,10,12,14,15,18,19,21};
scanf(“%d”和键)(&key);
答案=二进制搜索(A,键);
如果(回答!=-1)
{
printf(“%d”,答案);
}
其他的
{
看跌期权(“未找到”);
}
}
int二进制搜索(int A[],int键)
{
int i;
int h,l,m;
h=10;
l=0;
而(l改变病情
while(l<=h)
请格式化您的代码,它是无法理解的。请使用h=9
而不是h=10
,因为数组元素从0
到n-1
。即使没有更改,您的代码对我也有效。@gauravsehgal它对范围内的数字有效,但对范围以上的数字无效。什么数字对您无效?我检查过了再一次。对于101
,我得到了未找到的。我错在哪里?
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 );