DT了有木有,不知道哪里思维转不过弯,这么一个小程序改了写,写了改......

Posted on 2013年8月23日 09:48

 

(define (BS lst rst)
  (define mid (/ (+ lst rst) 2))
  (if (< (- rst lst) 1)
  lst
  (if (ok mid)
      (BS lst mid)
      (BS mid rst))))
(define ans 5)
(define (ok mid)
  (if (> mid 50)
       #t 
       #f))

- 未命名 -

Posted on 2013年8月22日 07:46

 

//二分查找 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;
}