C++二分查找库函数 lower_bound,upper_bound,binary_search 的简单使用
需要
#include <algorithm>
lower/upper_bound函数
参数列表及其解释:
/*
param 1 : 要查找的序列首地址
param 2 : 要查找的地址结束地址
param 3 : 要查找的元素地址
return : 使用二分查找,若存在,返回地址,若不存在,返回大于等于pram3的第一个地址
*/
lower_bound(param1, param2, param3);
/*
param 1 : 要查找的序列首地址
param 2 : 要查找的地址结束地址
param 3 : 要查找的元素地址
return : 使用二分查找,若存在,返回地址,若不存在,返回大于pram3的第一个地址
*/
upper_bound(param1, param2, param3);
注意
- 查找的下标范围是
[0, param2-param1)
,左开右闭区间 - 返回值是地址,需要通过减去首地址,转换为下标数字
- 如果待查找元素比任意一元素都大,那么返回之后,转换过来的下标是越界的
代码
#include <iostream>
#include <algorithm>
using namespace std;
#define MAXLEN 1009
int a[MAXLEN];
int n