算法总结二分搜索

Posted atanisi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法总结二分搜索相关的知识,希望对你有一定的参考价值。

一、 STL函数

  • lower_bound()

    试图在已排序的 [first, last) 中寻找元素 value。返回一个迭代器,指向第一个“不小于 value”的元素,如果 value 大于 [first, last)内的任何一个元素,则返回 last。实际上,它返回“在不破坏顺序的情况下,可插入 value 的第一个合适位置”。

  • upper_bound()

    试图在已排序的 [first, last) 中寻找元素 value。返回一个迭代器,如果 value 存在,迭代器将指向最后一个 value 的下一位置。实际上,它会返回“在不破坏顺序的情况下,可插入 value 的最后一个合适位置”

  • binary_search()

    返回值为 Bool 类型,如果 [first, last)内有等同于value的元素,便返回 true,否则返回 false。

二、二分搜索实现及分析

 

三、二分搜索思想的扩展

  分析 lower_bound() 函数,其搜索也可转化为“求满足某个条件$C(x)$的最小的$x$"这一问题。而$C(x)$即为$a_{i}\geqslant k$。对于任意满足$C(x)$的$x$,如果所有的${x}‘\geqslant x$也满足$C({x}‘)$的话,我们就可以用二分搜索来求得最小的$x$。

  1. 假定一个解并判断是否可行

 

  2.最大化最小值

  

  3.最大化平均值

  

 

以上是关于算法总结二分搜索的主要内容,如果未能解决你的问题,请参考以下文章

备战NOIP[算法总结] 二分查找

二分查找及其应用总结

算法第二章实践总结

力扣35:搜索插入位置, 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题

力扣35:搜索插入位置, 总结了二分查找的通用模板写法, 彻底解决几个易混淆问题

二分算法(java超详细)