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] = {0123456789};
8
9    // 返回值是bool类型
10    // 在a数组中下标[1, 9]之间找数字4
11    bool b = binary_search(a + 1, a + 9 + 14);
12    // b的值为1
13    cout << b << endl;
14
15    // 在a数组中下标[1, 9]之间找数字90
16    b = binary_search(a + 1, a + 
9 + 190);
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] = {0123456789};
8
9    // 返回下标位置
10    // 在a数组中下标[1, 9]之间找数字4
11    int idx = lower_bound(a + 1, a + 9 + 14) - a;
12    // idx的值为4
13    cout << idx << endl;
14
15    // 在a数组中下标[1, 9]之间找数字90
16    idx = lower_bound(a + 1, a + 9 + 190) - a;
17    // idx的值为10
18    cout << idx << endl;
19
20    return 0;
21}


C++二分查找常用函数

函数名称:upper_bound

功       能:查找第一个大于某个元素的位置

使用格式:

upper_bound(数组名+起始元素下标,数组名+终止元素下标+1,元素值) - 数组名;

使用实例:

 1#include <bits/stdc++.h>
2using namespace std;
3
4int main()
5
{
6    // a数组是有序的从小到大
7    int a[10] = {0123456789};
8
9    // 返回下标位置
10    // 在a数组中下标[1, 9]之间找数字4
11    int idx = upper_bound(a + 1, a + 9 + 14) - a;
12    // idx的值为5
13    cout << idx << endl;
14
15    // 在a数组中下标[1, 9]之间找数字90
16    idx = upper_bound(a + 1, a + 9 + 190) - a;
17    // idx的值为10
18    cout << idx << endl;
19
20    return 0;
21}

微信搜索

NOIP那些事儿


以上是关于C++二分查找常用函数的主要内容,如果未能解决你的问题,请参考以下文章

C++常用查找算法

(C++)用upper_bound函数取代自己写的二分查找

查找算法解析学习四大常用的计算机查找算法 | C++

C++ STL中的二分查找

C++里使用二分法查找和lambda表达式进行比较

精选力扣500题 第20题 LeetCode 704. 二分查找c++详细题解