P4 二分查找 binary_search lower_bound upper_bound

二分查找只能对于数组并且那数组是单调

binary_search(开始,结尾,查找值)用于已排序的序列中通过二分查找算法俩确定序列是否纯在目标元素

返回值是bool值(因此只有true/false),表示目标元素是否纯在序列中

如果需要获取找到的元素位置用lower_bound或upper_bound 必须是非降序

如果是非升序中,可以通过修改比较函数实现(方法与sort自定义比较函数相似)

lower_bound(开始,结尾,值)返回地址[开始,结尾)中第一个大于等于值得元素地址

upper_bound(开始,结尾,值)返回地址[开始,结尾)中第一个大于值得元素地址

如果不纯在则返回最后一个元素的下一个位置,在vector中即为end()

如果要找这个数字在那下标出现则是[lower_bound,upper_bound]

地址-首地址=下标

#include 
#include 
#include 
using namespace std;

int main()
{
    vector a = { 2, 3, 4,5 ,6 };
    int target = 5;
    bool found = binary_search(a.begin(), a.end(), target);
    cout << (lower_bound(a.begin(), a.end(), 5) - a.begin()) << '\n';
    if (found)
    {
        cout << target << "yes" << endl;
    }else
    {
        cout << target << "no" << endl;
    }
}

你可能感兴趣的:(c++基础,算法,数据结构)