二分
整数二分:
while(l<r) { int m=(l+r)/2;//右边区间 if(ture)r=m; else l=m+1; } //当r=l时,即是在ture和fasle的边界点上 while(l<r) { int m=(l+r+1)/2;//左边区间,+1是为了防止当l=r-1时,如果为真l还是等于r-1,这样就会陷入死循环; if(ture)l=m; else r=m-1; }浮点数二分:
浮点数二分则相对简单,因为它不需要考虑边界问题。但值得注意的是代码中的精度要比题目所要求的精度小个10^-2;
while(l<r) { int m=(l+r)/2; if(ture)r=m; else l=m; }