1、
二分查找法:对于一个有序数列,刚开始查找数组中间这个数是不是需要的数字,如果是的话,将其索引返回。否则,如果目标对象比中间的数小,从其左边的数组开始查找。否则,从右边的数组开始查找。
2、
//[0....n]
public static int BinarySearch(int[] arry,int n,int target){
int l=0,r=n; //在[l....r]前闭后闭的区间范围内查找target
while (l<=r){ //当l==r时,区间[l...r]依然是有效的
int mid=l+(r-l)/2;
if(arry[mid]==target)
return mid;
if(target<arry[mid]){
r=mid-1; //target在[l...mid-1]中
}else{ //target>array[mid]
l=mid+1; //target在[mid+1...r]中
}
}
return -1;
}