找不到二进制搜索代码错误

Binary Search Code error can not be find

本文关键字:错误 代码 搜索 二进制 找不到      更新时间:2023-10-16

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

 /*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;