【发布时间】:2015-05-16 19:48:34
【问题描述】:
我正在使用二进制搜索算法在预定义的数组中查找一个数字,但如果我已经在数组中输入值,我会得到正确的答案,但是在输入不在数组中的值时,例如 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;
}
【问题讨论】:
-
请格式化您的代码,无法理解。
-
使用
h=9而不是h=10,因为数组元素是从0到n-1。即使没有更改,您的代码也适用于我。ideone.com/W6hWZI -
@gauravsehgal 它适用于范围内的数字,但不适用于范围以上的数字。
-
哪个号码不适合您?
-
我又检查了一遍。我收到
NOT FOUND换成101。我哪里错了?
标签: c function sorting binary-search