码迷,mamicode.com
首页 > 编程语言 > 详细

【算法总结】二分搜索

时间:2018-03-31 22:22:26      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:二分   第一个   类型   返回值   strong   nbsp   迭代器   二分搜索   arch   

一、 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.最大化平均值

  

 

【算法总结】二分搜索

标签:二分   第一个   类型   返回值   strong   nbsp   迭代器   二分搜索   arch   

原文地址:https://www.cnblogs.com/Atanisi/p/8684339.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!