#include <iostream>
using namespace std;
int binarySearch(int a[], int n, int target)
{
//在[l,r]区间寻找target
int l=0;
int r=n-1;
while(l<=r) //l=r依旧存在值
{
int mid =(l+r)/2;
if(a[mid]==target)
return mid;
else if(a[mid]>target) //目标值在左边
r=mid-1;
else
l=mid+1;
}
return -1;
}
int main()
{
int a[9]={1,2,3,4,5,6,7,8,9};
cout<<binarySearch(a,9,1);
return 0;
}
程序BUG
当l和r足够大的时候,相加会出现整型溢出的错误
解决:避免l+r
int mid=l+(r-l)/2