为什么我的二进制搜索没有给我第一个元素的结果?
Why isn't my binary search giving me a result for the first element?
我正在尝试 return 要搜索的元素的索引。除第一个元素外,所有元素都被检测到。怎么了?为什么函数不 returning 索引 0?
using namespace std;
int binsearch(int a[],int x,int y)
{
int low=a[0];
int high=a[x-1];
while(low<=high)
{
int mid=(low+high)/2;
if(y==a[mid])
{
return mid;
}
else if(y>a[mid])
{
low=mid+1;
}
else
{
high=mid-1;
}
}
return -1;
}
int main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int x=sizeof(a)/sizeof(a[0]);
int y;
cin>>y;
cout<<binsearch(a,x,y);
}
int low=a[0];
int high=a[x-1];
应该是
int low=0;
int high=x-1;
我正在尝试 return 要搜索的元素的索引。除第一个元素外,所有元素都被检测到。怎么了?为什么函数不 returning 索引 0?
using namespace std;
int binsearch(int a[],int x,int y)
{
int low=a[0];
int high=a[x-1];
while(low<=high)
{
int mid=(low+high)/2;
if(y==a[mid])
{
return mid;
}
else if(y>a[mid])
{
low=mid+1;
}
else
{
high=mid-1;
}
}
return -1;
}
int main()
{
int a[]={1,2,3,4,5,6,7,8,9};
int x=sizeof(a)/sizeof(a[0]);
int y;
cin>>y;
cout<<binsearch(a,x,y);
}
int low=a[0];
int high=a[x-1];
应该是
int low=0;
int high=x-1;