void LowerBound() {
t("lower_bound");
/*
lower_bound的主要作用是返回一个迭代器,指向第一个 *不小于* 给定值(称为value)的元素。
如果所有元素都不大于value(即所有元素都小于或等于value),则返回指向范围末尾的迭代器。
语法:lower_bound(开始位置,结束位置的下一个位置,要查找的值);
位置:数组元素位置用数组名+下标表示,向量数组vector用.begin()/.end()表示
*/
int a[] = {1, 2, 2, 2, 3, 4, 5};
int n = 7;
int value = 6;// 0-0; 2-1; 5-6; 6-7
// 使用 lower_bound 查找第一个不小于 value 的元素
auto it = lower_bound(a, a+n, value);
cout << (it-a);
}
void UpperBound() {
t("upper_bound");
/*
upper_bound的主要作用是返回一个迭代器,指向第一个 *大于* 给定值(称为value)的元素。
如果所有元素都不大于value(即所有元素都小于或等于value),则返回指向范围末尾的迭代器。
语法:upper_bound(开始位置,结束位置的下一个位置,要查找的值);
位置:数组元素位置用数组名+下标表示,向量数组vector用.begin()/.end()表示
*/
int a[] = {1, 2, 2, 2, 3, 4, 5};
int n = 7;
int value = 2;// 0-0; 1-1;2-4;5-7;6-7
// 使用 upper_bound 查找第一个大于 value 的元素
auto it = upper_bound(a, a+n, value);
cout << (it-a);
vector<int> vec = {1, 2, 2, 2, 3, 4, 5};
value = 0; // 0-0; 1-1;2-4;5-7;6-7
// 使用 upper_bound 查找第一个大于 value 的元素
auto it2 = upper_bound(vec.begin(), vec.end(), value);
cout << (it2-vec.begin()) << endl;
}
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 算法-二分查找2(代码笔记)
发表评论 取消回复