BinarySearch
说明:
BinarySearch中文又叫做二分查找,这是一种查找类的算法,但是其使用是有一定的限制的,那就是必须要区间类必须要满足相应的单调性,不然的话是无法使用的。
Java代码模板:
整形二分(左闭右闭):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   |  public static void binarySearch(){ 	     int l=0,r=100,mid;          while(l<=r){                  mid = (l+r)>>1;                  if(check(Object c))             l = mid+1;          else             r = mid-1;      } }
 
 
  public static void check(Object c){      }
 
  | 
 
整形二分(左闭右开):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   |  public static void binarySearch(){ 	  int l=0,r=100,mid;    while(l<r){            mid = (l+r)>>1;            if(check(Object c))          l = mid+1;       else          r = mid;   } }
 
 
  public static void check(Object c){   }
 
  | 
 
整形二分(左开右闭):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
   |  public static void binarySearch(){ 	  int l=0,r=100,mid;    while(l<r){            mid = (l+r+1)>>1;            if(check(Object c))          l = mid;       else          r = mid-1;   } }
 
 
  public static void check(Object c){   }
 
  | 
 
高精度二分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
   |  public static void BianrySearch(){          double l = 0,r=1e11,mid;      	while(r-l>1e-5) { 		mid = (l+r)/2.0; 		         if(check(Object o)) 			l = mid; 		else 			r =mid; 	} }
  public static void check(){      }
 
  | 
 
C++代码模板
整形二分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
   | #include<iostream>
  using namespace std;
  int main(){          int l = 0,r = 10000,mid=0;     while(l<r){         mid = (r+l+1)>>1;                       if(check(mid))             l = mid;         else             r = mid-1;      }          return 0; }
 
  bool check(int mid){     ...     return false; }
   |