一. upper_bound(begin,end,num)
作用:这个函数是在已经排好序的数组 a 中,利用二分搜索来找出指向满足 ai > k 的 ai 的最小的指针。
begin: 数组的起始位置;
end: 数组的终止位置;
num: 参考数字;
二. lower_bound(begin,end,num)
作用:这个函数是在已经排好序的数组 a 中,利用二分搜索来找出指向满足 ai >= k 的 ai 的最小的指针。
begin: 数组的起始位置;
end: 数组的终止位置;
num: 参考数字;
注意:
需要注意的是,这两个函数求出来的值是一个指针,那么,要知道这个值是在数组的哪个位置,所以要用着个指针减去数组的首元素的位置,得出来的结果就是你要求出来的值的位置;
代码如下:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int a[10]={10,9,8,7,6,5,4,3,2,1};
sort(a,a+10);
int kk=upper_bound(a,a+10,2)-a;//第一位大于2的数值的下标;
printf("kk==%d %d\n\n\n",kk,a[kk]);
int qq=lower_bound(a,a+10,2)-a;//第一位大于或者等于2的数值的下标;
printf("qq==%d %d\n",qq,a[qq]);
return 0;
}