Java有没有lower_bound函数_函数 - lower_bound&upper_bound

lower_bound&upper_bound - 二分查找函数

它们是C++自带的函数,用于在有序的数列里进行查找。注意,一定是有序的

它们使用的是二分查找的方法,时间复杂度为O(logn),效率很高

使用它们要加上算法头文件,当然,可以使用万能头文件也可以

#include // 算法头文件

#include //万能头文件

先了解一下它们的区别

lower_bound - 数列递增序时查找大于等于查找数的第一个数,递减则查找小于等于查找数的第一个数

upper_bound - 数列递增序时查找严格大于查找数的第一个数,递减则严格小于等于查找数的第一个数

再看下使用格式

可以看出两者使用格式基本相同

lower_bound(begin, end, num);

upper_bound(begin, end, num);

但是它们的返回值是指针或迭代器,我们要想获取下标还要再减去首地址,知道了下标也就可以获得具体指了

举几个例子便于理解

数组内使用:

int a[5] = {1, 2, 3, 4, 5};

int p = lower_bound(a, a+5, 3)-a; //p=2

int num = a[p]; //num=3

vector内使用

vector v;

for(int i=1; i<=5; i++)

v.push_back(i);

int p = lower_bound(v.begin(), v.end(), 3)-v.begin(); //p=2

int num = v[p]; //num=3

补充说明

在递减序数列中使用中要加上"greater()"

lower_bound(begin, end, num, reater());

upper_bound(begin, end, num, reater());

如有疑问欢迎在下方评论区提出

你可能感兴趣的:(Java有没有lower_bound函数_函数 - lower_bound&upper_bound)