实数二分

当二分查找的区间是一个实数域时,称之为实数二分。
实数二分的算法思想没有变化,但时因为实数和整数不同,整数是离散的,可以逐一枚举,区间中除了首尾边界外,每个整数都有一个前驱和后驱;实数是连续的,所以实现方式和整数二分有所不同。
常见的形式是通过确定好精度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        
}

 

 

posted @ 2024-12-27 19:06  王一行(小号)  阅读(30)  评论(0编辑  收藏  举报