当二分查找的区间是一个实数域时,称之为实数二分。
实数二分的算法思想没有变化,但时因为实数和整数不同,整数是离散的,可以逐一枚举,区间中除了首尾边界外,每个整数都有一个前驱和后驱;实数是连续的,所以实现方式和整数二分有所不同。
常见的形式是通过确定好精度prec(le-6,le-8等),以left+prec<right为循环条件,然后每次根据在mid上的判定,选择左半区间[left,mid]或右半区间[mid,right]。循环结束后,left即为最终答案。
另外一种形式是预估精度,采用限定次数的循环来实现
示例代码:
while(left+1e-6<right){double mid = (left+right)/2;if(check(mid)) left = mid;else right = mid }