以下代码无法得到正确答案,但我不知道哪个部分出错了。 它的逻辑看起来是正确的,它无法用完正确的答案
/*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;
}
答案 0 :(得分:0)
您的循环应该由left <= right
限制。
mid
也应为mid = (left + right)/2;