C++二分查找常用函数
Posted NOIP那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++二分查找常用函数相关的知识,希望对你有一定的参考价值。
函数名称:binary_search
功 能:查找某个元素是否出现
使用格式:
binary_search(数组名+起始元素下标,数组名+终止元素下标+1,元素值);
使用实例:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main()
5{
6 // a数组是有序的从小到大
7 int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
8
9 // 返回值是bool类型
10 // 在a数组中下标[1, 9]之间找数字4
11 bool b = binary_search(a + 1, a + 9 + 1, 4);
12 // b的值为1
13 cout << b << endl;
14
15 // 在a数组中下标[1, 9]之间找数字90
16 b = binary_search(a + 1, a + 9 + 1, 90);
17 // b的值为0
18 cout << b << endl;
19
20 return 0;
21}
函数名称:lower_bound
功 能:查找第一个大于或等于某个元素的位置
使用格式:
lower_bound(数组名+起始元素下标,数组名+终止元素下标+1,元素值) - 数组名;
使用实例:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main()
5{
6 // a数组是有序的从小到大
7 int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
8
9 // 返回下标位置
10 // 在a数组中下标[1, 9]之间找数字4
11 int idx = lower_bound(a + 1, a + 9 + 1, 4) - a;
12 // idx的值为4
13 cout << idx << endl;
14
15 // 在a数组中下标[1, 9]之间找数字90
16 idx = lower_bound(a + 1, a + 9 + 1, 90) - a;
17 // idx的值为10
18 cout << idx << endl;
19
20 return 0;
21}
函数名称:upper_bound
功 能:查找第一个大于某个元素的位置
使用格式:
upper_bound(数组名+起始元素下标,数组名+终止元素下标+1,元素值) - 数组名;
使用实例:
1#include <bits/stdc++.h>
2using namespace std;
3
4int main()
5{
6 // a数组是有序的从小到大
7 int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
8
9 // 返回下标位置
10 // 在a数组中下标[1, 9]之间找数字4
11 int idx = upper_bound(a + 1, a + 9 + 1, 4) - a;
12 // idx的值为5
13 cout << idx << endl;
14
15 // 在a数组中下标[1, 9]之间找数字90
16 idx = upper_bound(a + 1, a + 9 + 1, 90) - a;
17 // idx的值为10
18 cout << idx << endl;
19
20 return 0;
21}
微信搜索
NOIP那些事儿
以上是关于C++二分查找常用函数的主要内容,如果未能解决你的问题,请参考以下文章