在stl中对二分查找进行了封装,有两种——upper_bound,lower_bound。
例如:pos=lower_bound(a,a+n,value);///查找value值在长度为n的数组a中的位置
关于返回值,函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置
upper_bound返回大于val的第一个元素位置
#include<iostream> #include <algorithm>//必须包含的头文件 using namespace std;
int main(){ int point[10] = {1,3,7,7,9}; int tmp = upper_bound(point, point + 5, 7) -point;//按从小到大,7最多能插入数组point的哪个位置 printf("%d\n",tmp); tmp = lower_bound(point, point + 5, 7) -point;按从小到大,7最少能插入数组point的哪个位置 printf("%d\n",tmp); return 0; }
output:
4
2
革命尚未成功!
转载请注明原文地址: https://ju.6miu.com/read-659904.html