美文网首页
整数二分查找原理及代码模板

整数二分查找原理及代码模板

作者: CurryCoder | 来源:发表于2020-10-29 23:31 被阅读0次

1.整数二分算法原理

  • ps:数组具有单调性,则一定可以使用整数二分算法;但是,能够使用整数二分算法的数组,数组未必具有单调性
  • 整数二分算法的本质:给定一个区间,在区间中定义了某种性质。该性质在区间的右半区间是满足的,但在左半区间是不满足的。二分法的目的就是为了寻找满足某种性质的分界点
  • 算法主要步骤
    • a.确定区间的中间点mid
    • b.根据实际问题编写check()函数,判断mid是否满足区间[l, r]的某种性质
    • c.更新区间端点
  • 模板1图解:


    模板1.png
  • 模板2图解:


    模板2.png

2.代码模板1


// 根据实际题目场景编写check()函数,检查x是否满足某种性质
bool check(int x) 
{

}


// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用
int bsearch_2(int l, int r)
{
    while(l < r)
    {
        int mid = l + r + 1 >> 1;
        if(check(mid)) l = mid;
        else r = mid - 1;
    }
    return l;
}

3.代码模板2


// 根据实际题目场景编写check()函数,检查x是否满足某种性质
bool check(int x) 
{

}

// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用
int bsearch_1(int l, int r)
{
    while(l < r)
    {
        int mid = l + r >> 1;
        if(check(mid)) r = mid;  // check()判断mid是否满足性质
        else l = mid + 1;
    }
    return l;
}

相关文章

  • 整数二分查找原理及代码模板

    1.整数二分算法原理 ps:数组具有单调性,则一定可以使用整数二分算法;但是,能够使用整数二分算法的数组,数组未必...

  • 二分查找

    [TOC] 二分查找的基础模板 二分查找靠左的Index基础模板 二分查找靠右的Index基础模板 二分查找插入t...

  • 查找算法

    查找算法 1顺序查找 2二分查找 2.1二分查找思路分析 2.2代码实现 3插值查找 3.1插值查找原理介绍: ​...

  • LeetCode 数组专题 1:二分查找

    二分查找法 说明:二分查找法在代码实现上有模板方法,一定要掌握。 1、二分查找法的使用前提:数组一定要是排好序的,...

  • Algorithm进阶计划 -- 二分搜索

    二分搜索二分搜索模板二分搜索运用 1. 二分搜索模板 二分搜索(二分查找)也称折半查找(Binary Search...

  • 二分查找模式

    二分查找通用的模板int mid = (left + right) / 2容易溢出 二分查找的通用模板 使用“左边...

  • 二分查找总结

    二分查找是在每次匹配后,将查找的空间一分为二的算法,二分查找应该是有序的数组进行查找. 二分查找模板 1. 模板一...

  • JAVA 冒泡排序、二分查找简述

    冒泡排序 1.原理图: 2.代码实践 二分查找 (基于有序数组)1.原理图: 2.代码实践:

  • git bisect二分查找使用

    使用 git bisect 二分查找定位bug 原理 原理: 将代码提交的历史,按照两分法不断缩小定位。所谓"...

  • git bisect二分查找使用

    使用 git bisect 二分查找定位bug 原理 原理: 将代码提交的历史,按照两分法不断缩小定位。所谓"...

网友评论

      本文标题:整数二分查找原理及代码模板

      本文链接:https://www.haomeiwen.com/subject/ctcrvktx.html