为什么我的二进制搜索没有给我第一个元素的结果?

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;