- 未命名 -

Amyc posted @ 2013年8月22日 07:46 in 未分类 , 1096 阅读

 

//二分查找 INIT:a[]
 
bool   BinSearch(int *a,int low,int high,int target){  //a数组递增;
    while(low<=high){
        int mid=(low+high)/2;
        if(a[mid]==target) return true;
        if(a[mid]>target) high=mid-1;
        else  low=mid+1;
    }
    return false;
}
 
//找到一个位置使右边的数>=此位的数 INIT:arr[]
 
int  BSearchUpperBound(int  arr[], int low, int high, int target){ 
    while(low<=high){
        int mid = (low+high)/2;
        if(arr[mid]>=target) high=mid-1;
        if(arr[mid]<target) low=mid+1;
     }
     return low-1;
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter