Binary Search Code 错误找不到

Binary Search Code error can not be find

下面的代码无法得到正确的答案,但我不知道哪一部分是错误的。 它的逻辑看起来是正确的,它不能运行出正确答案

 /*binary search*/
    int binary_search(const vector<int> &a,int x) {
    long left = 0;
    int mid;
    long right=a.size()-1;
//write your code here
    while (a[left]<a[right]){
         mid=a[left+(right-left)/2];
         if (a[mid]==x){
            return mid;
         }
         else if (a[mid]>x){
            right=mid-1;
         }
         else{
            left=mid+1;
         }
    }
    return -1;
}

您的循环应以 left <= right 为条件。 另外 mid 应该是 mid = (left + right)/2;