二分问题总结

二分问题思想

二分问题的显著特点是某问题给定一个特定的值K,求关于K的一个参数值,若该参数对K的影响是单调的,那么便可以使用二分法来逼近K,以求得准确的参数。

种类

1.二分查找

给定一集合,查找是否存在某数。

//二分查找,传入初值[0,n-1]
int binarySearch(int A[],int left,int right,int x)
{
    int mid;
    while(left <= right)
    {
        mid = (left + right) / 2;
        if(mid > x)
            right = mid - 1;
        else if(mid < x)
            left = mid + 1;
        else return mid;
    }
    return -1;
}

2.二分查找第一个满足条件的某数

//传入[0,n]
int lowerBound(int A[],int left,int right,int x)
{
    int mid;
    while(left < right)
    {
        mid = (left + right) / 2;
        if(mid >= x)
            right = mid;
        else
            left = mid + 1;
    }
    return left;
}

3.二分查找最后一个满足条件的某数

可以转换为求解第一个不满足该条件的解,然后将该解的位置减一即可

4.二分求值

double f(double x) // 给定f二分求解f(x)=0的根
{
    return ...;
}

double solve(double L,double R,double eps) //eps:精度
{
    double left = L,right = R,mid;
    while(right - left > eps)
    {
        mid = (left + right) / 2;
        if(f(mid) > 0)
            right = mid;
        else
            left = mid
    }
    return mid;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 眼泪冲不走隐忍 云层窥探了阳光的欲言又止 文字不再善良 狰狞地面容 将包裹的伤口揭开 面具被脱落 呜咽的声响 试探...
    西西娜阅读 656评论 0 0
  • 窦红梅 焦点初第43期第788天分享: 俗话说得好坚持就是胜利,坚持就有很大的收获,哪怕你做得再不好或者在慢...
    阿慧_c55c阅读 825评论 0 0
  • 昨天晚上经历了一次铭心的放学路…… 老师上课讲到了10:45,我们意犹未尽。下课后一路奔跑着冲向地铁站,上了十号线...
    胖胖鱼儿阅读 1,423评论 0 2
  • 一【班级】: 绘生绘色班 二【代课老师】: 彩虹 三【年级】 二、三年级 四【国家纲要】 本《标准》的阶段目...
    鼎典书画高平杨宏阅读 5,206评论 0 0