二分查找基础模板
二分查找可以根据查找区间的不同分类,常见的类型有左闭右闭型与左闭右开型。
下面以左闭右闭型为例:
1 | std::vector<int> a(n + 1); |
对于不同类型的二分查找,其实现细节略有不同(比如对左闭右开型的二分,其终止条件换为l < r,并且右区间的更改也变为r = mid(注意左区间的更改不变)。详见B站UP主“代码随想录”的视频BV1fA4y1o715)
C++还提供了定义在头文件algorithm中的函数upper_bound()和lower_bound()用于二分查找。
下面提供一个例子,实现与C++函数lower_bound()类似的功能。
1 | std::vector<int> a(n + 1); |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Roseau的博客!




