二分的浅学习

二分查找头文件:

#include<algorithm>

binary_search函数
二分查找使用是基于数组是有序的,因此在使用二分查找之前要确保数组已经进行了排序。
binary_search函数需要传入三个参数,第一个参数查找开始元素的地址,第二个参数是查找结束的地址,第三个元素是需要查找的值。返回值是一个bool值,如果数组中存在要找的值,则返回true,否则返回false。

lower_bound函数
lower_bound的功能是查找数组中大于等于传入参数的第一个元素。它的返回值是元素的位置地址,因此是一个指针类型。该函数的参数也是和binary_search一样,有三个。如果数组中存在大于传入参数的元素,则返回该元素的地址指针,否则返回数组最后一个元素后面的一个指针。

upper_bound函数
upper_bound的功能是查找数组中大于传入参数的第一个元素元素,它的参数与返回值和lower_

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

void testBinarySearch() {
	vector<int> arr = { 1,2,3,4,5,6,7,8,9 };
	if (binary_search(arr.begin(), arr.end(), 5)) {
		cout << "数字5在数组中" << endl;
	}
	int arr1[] = { 1,2,3,4,5,6,7,8,9 };
	int *index = lower_bound(arr1, arr1+9, 10);//查找失败,返回的是最后一个元素后面一个指针
	cout << *index << endl;
	index = lower_bound(arr1, arr1 + 9, 5);//查找成功,返回的是数组中5这个元素的地址指针
	cout << *index << endl;

	//upper_bound函数是查找数组中第一个大于所传参数的元素的地址,返回的也是元素的地址指针。
	//如果数组中存在比所传参数大的元素,那么返回该元素所在的地址指针,否则返回end指针
	int *index2 = upper_bound(arr1, arr1 + 9, 9);
	cout << *index2 << endl;
	index2 = upper_bound(arr1, arr1 + 9, 5);//查找成功,返回的是数组中6这个元素的地址指针
	cout << *index2 << endl;
}
int main(int argc, char *argv[]) {
	//测试二分查找
	cpp1::testBinarySearch();
}

bound一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值