【算法学习笔记】基础算法02 二分

101 阅读1分钟

二分算法的模板及分析

一、整数二分

代码模板

第一类

int l = 0, r = n - 1;
while (l < r)
{
    int mid = l + r >> 1;
    if (x <= a[mid]) r = mid;
    else l = mid + 1;
}

第二类

int l = 0, r = n - 1;
while (l < r)
{
    int mid = l + r + 1 >> 1;
    if (a[mid] <= x) l = mid;
    else r = mid - 1;
}

二、浮点数开方

代码模板

double l = 0, r = 10000;
while (r - l > 1e-8)
{
    double mid = (l + r) / 2;
    if (mid * mid < n) l = mid;
    else r = mid;
}