无法找到二进制搜索代码错误

时间:2016-07-20 03:08:30

标签: c++ binary-search

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

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

1 个答案:

答案 0 :(得分:0)

您的循环应该由left <= right限制。 mid也应为mid = (left + right)/2;