二分法第一種
在[left,right]范圍內(nèi)尋找target
public int BinarySearch(int []a,int n,int target){
int left=0;int right=n-1;//在[left,right]范圍內(nèi)尋找target
while (left<=right){//當(dāng)l==r時摹闽,區(qū)間[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)范圍內(nèi)尋找target
public int BinarySearch1(int []a,int n,int target){
int left=0;int right=n;//在[left,right)范圍內(nèi)尋找target
while (left<right){//當(dāng)l==r時,區(qū)間[l,r)有效
int mid=(left+right)/2;
if (a[mid]==target){
return mid;
}
else if (a[mid]>target){
right=mid;//此時需修改褐健,讓其在左開右閉的區(qū)間內(nèi)
}
else {
left=mid+1;
}
}
return -1;
}