蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第1张图片

01 二分查找的前提

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第2张图片

02 binary_search函数

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第3张图片

#include
using namespace std;
int main(){
	vector<int> numbers={1,3,5,7,9};
	int target = 5;
	//使用binary_search 查找目标元素
	bool found = binary_search(numbers.begin(),numbers.end(),target);
	if(found){
		cout<<"Target element"<< target<<" found."<<endl;
	}else{ 
		cout<<"Target element"<<target<<" not found."<<endl;
	}
	return 0;
}

在这里插入图片描述

03 lower_bound和upper_bound函数

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第4张图片

#include
using namespace std;
int main(){
	vector<int> v={5,1,7,3,10,18,9};
	sort(v.begin(),v.end());
	for(auto&i:v)cout<<i<<' ';
	cout<<'\n';
	//找到数组中第一个大于等于8的元素的位置
	cout<<(lower_bound(v.begin(),v.end(),8)-v.begin())<<'\n'; 
	return 0;
}

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第5张图片

04 例题讲解

https://www.lanqiao.cn/problems/1389/learning/?page=1&first_category_id=1&problem_id=1389
蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第6张图片

#include 
using namespace std;
int main()
{
  int i;
  int data[200];
  for(i=0;i<200;i++)data[i]=4*i+6;
  int target;
  cin>>target;
  for(i=0;i<200;i++){
    if(target==data[i]){
      cout<<i;
      break;
    }
  }
  return 0;
}

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第7张图片

蓝桥杯省赛无忧 竞赛常用库函数 课件7 二分查找_第8张图片

你可能感兴趣的:(蓝桥杯省赛无忧,蓝桥杯,职场和发展,c++,c语言)