二分查找错误输出
Wrong output in binary search
我正在使用二进制搜索算法在预定义数组中查找数字,但如果我输入的值已经在数组中,我得到的是正确答案,但输入的值不在数组中,如 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;
}
改变条件
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 );
我正在使用二进制搜索算法在预定义数组中查找数字,但如果我输入的值已经在数组中,我得到的是正确答案,但输入的值不在数组中,如 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;
}
改变条件
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 );