<算法基础>二分查找

        相较于网络上其他两种二分模板,更优雅的二分模板是左开右开区间模板

  • l + 1 = r时结束
  • 可行区的指针最后一定指向答案
  • 开区间可以正确处理边界

一、整数二分查找

1. 最大化查找:

最大化查找:查找最后一个<=q的下标
int find(int q)
{
    int l = 0, r = n + 1;
    while (l + 1 < r)
    {
        int mid = l + r >> 1;
        if (a[mid] <= q)    l = mid;
        else    r = mid;
    }

    return l;
}

2. 最小化查找:

最小化查找:查找最后一个>=q的下标
int find(int q)
{
    int l = 0, r = n + 1;
    while (l + 1 < r)
    {
        int mid = l + r >> 1;
        if (a[mid] >= q)    r = mid;
        else    l = mid;
    }

    return r;
}

        最终要返回哪一个指针,是要看你要查找的答案被分在了哪半边区域,如果是右边,那么答案就是r,如果是左边,那么答案就是 l

二、浮点数二分查找

1. 最大化查找

例如:求一个浮点数(-10000 <= y <= 10000)的三次方根

double find(double y)
{
    double l = -100, r = 100;
    while (r - l > 1e-5)
    {
        >>右移操作符只适用于整形,浮点型不可以使用,因为存储方式不同
        double mid = (l + r) / 2;
        if (mid * mid *mid <= y)    l = mid
        else    r = mid;
    }
    return l;
}

int main()
{

    double y; sacnf("%lf", &y);
    printf("%.3lf\n", find(y));
    
    return 0;
}

相关推荐

  1. 算法基础二分查找

    2024-04-10 01:28:02       35 阅读
  2. 天秀基础算法 - 二分查找二分答案

    2024-04-10 01:28:02       33 阅读
  3. 二分查找算法

    2024-04-10 01:28:02       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-10 01:28:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-10 01:28:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-10 01:28:02       82 阅读
  4. Python语言-面向对象

    2024-04-10 01:28:02       91 阅读

热门阅读

  1. fastadmin根据页面加载不同的js、css

    2024-04-10 01:28:02       40 阅读
  2. 输入框验证数字类型

    2024-04-10 01:28:02       31 阅读
  3. C++:连接MySQL数据库(一)

    2024-04-10 01:28:02       30 阅读
  4. 挑战30天C++基本入门(DAY13--搜索与回溯)

    2024-04-10 01:28:02       27 阅读
  5. 2024/4/9

    2024-04-10 01:28:02       35 阅读
  6. Linux系统部署搭建AI私人知识库助手教程

    2024-04-10 01:28:02       32 阅读
  7. 工业通信原理——Modbus-TCP通信规约定义

    2024-04-10 01:28:02       29 阅读
  8. 网络基础——路由协议对比

    2024-04-10 01:28:02       38 阅读
  9. 前端saas化部署

    2024-04-10 01:28:02       32 阅读
  10. 【算法 & 动态规划 &路径问题】二维dp问题

    2024-04-10 01:28:02       38 阅读
  11. c++找最高成绩

    2024-04-10 01:28:02       33 阅读