
二分法整数二分 vs 浮点数小数二分 总结核心本质相同都是不断缩小搜索区间取中间值判断舍弃一半不符合条件的区间。差别在于循环终止条件、区间更新方式。整数二分找边界最常用目标在离散整数集合找满足条件的第一个/最后一个整数循环条件 while(l r)分两类模板找左边界满足条件的最小数plaintextmid l (r - l) / 2;if(check(mid)) r mid;else l mid 1;找右边界满足条件的最大数plaintextmid l (r - l 1) / 2;if(check(mid)) l mid;else r mid - 1;特点区间是离散的点mid 一定是整数必须1 / -1不然死循环结束时 l r 就是答案浮点数小数二分目标求连续区间内的一个近似值平方根、方程解循环条件 while(r - l eps)eps 是精度比如 1e-6 、 1e-8模板plaintextmid (l r) / 2;if(check(mid)) r mid;else l mid;特点实数是连续的没有整数那种“相邻断点”mid 是小数不用 1、-1区间不断靠近只要区间足够小就可以停止输出 l 或者 r 都可以二者几乎相等有时候要补充一个1.0来让它变成浮点型一句话对比速记✅ 整数二分离散点靠 lr需要加减1防死循环求精确整数边界✅ 小数二分连续区间靠精度eps不用加减求近似值