二分模板
from:acwing
//浮点数二分 double search_0(int l, int r){ while(r - l > INT_MIN){//INT_MIN根据小数点位数定,eg.小数点3位,INT_MIN = 1e-4 double mid = (l + r) / 2; if(mid * mid * mid >= n)r = mid; else l = mid; } return l; } //整数二分 int search_1(int l, int r){ while(l < r){ int mid = l + r >> 1; if(array[mid] >= Find_Num)r = mid; else l = mid + 1; } return r;//return l;此时l == r,为最左边的Find_Num下标 } int search_2(int l, int r){ while(l < r){ int mid = l + r + 1 >> 1; if(array[mid] <= Find_Num)l = mid; else r = mid - 1; } return l;//return r;此时l == r,为最右边的Find_Num下标 }