二分法第一种
在[left,right]范围内寻找target
public int BinarySearch(int []a,int n,int target){
int left=0;int right=n-1;//在[left,right]范围内寻找target
while (left<=right){//当l==r时,区间[l,r]有效
int mid=(left+right)/2;
if (a[mid]==target){
return mid;
}
else if (a[mid]>target){
right=mid-1;
}
else {
left=mid+1;
}
}
return -1;
}
二分法第二种
在[left,right)范围内寻找target
public int BinarySearch1(int []a,int n,int target){
int left=0;int right=n;//在[left,right)范围内寻找target
while (left<right){//当l==r时,区间[l,r)有效
int mid=(left+right)/2;
if (a[mid]==target){
return mid;
}
else if (a[mid]>target){
right=mid;//此时需修改,让其在左开右闭的区间内
}
else {
left=mid+1;
}
}
return -1;
}