二分查找(c++)

概念

二分查找是分治算法的一种

题目练习

查找第一个大于等于target的数据

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;

int n,a[10010];

int erfen(int,int,int);
int main()
{
	
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	
	int target;
	cin>>target;
	cout<<erfen(target,0,n-1)<<endl;
	
	return 0;
}
int erfen(int target,int l,int r)
{
	int res = n-1;
	while(l<=r)
	{
		int mid = (l+r)/2;
		if(a[mid]<target) l = mid+1;
		else if(a[mid]>=target)
		{
			res = mid;
			r = mid-1;
		}
	}
	return res;
}

查找最后一个小于等于target的数据

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n,a[10010];

int erfen(int,int,int);
int main()
{
	cin>>n;
	for(int i = 0;i<n;i++)
	{
		cin>>a[i];
	}
	int target;
	cin>>target;
	cout<<erfen(target,0,n-1);
	
	return 0;
}
int erfen(int target,int l,int r)
{
	int res = 0;
	while(l<=r)
	{
		int mid = (l+r)/2;
		if(a[mid]>target) r = mid-1;
		else if(a[mid]<=target)
		{
			res = mid;
			l = mid+1;
		}
	}
	return res;
}

平方根计算

cpp 复制代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;


float erfen(float,float,float);

int main()
{
	
	float target;
	cin>>target;
	cout<<erfen(target,0.001,target);
	
	return 0;
}
float erfen(float target,float l,float r)
{
	float res = 0;
	while(l<=r)
	{
		float mid = (l+r)/2;
		int mid2 = mid/0.001;
		mid = mid2*0.001;
//		cout<<l<<" "<<mid<<" "<<r<<endl;
//		system("pause");
		if(mid*mid>target) r = mid-0.001;
		else if(mid*mid<target) l = mid+0.001;
		if(mid==res) return res;
		res = mid;
	}
	return res;
}
相关推荐
小新讲网安1 小时前
WiFi安全攻防实战:WPA3新协议与传统破解技术全解析
开发语言·网络·安全·php·漏洞·nmap·漏洞检测
致Great7 小时前
Pi 的上下文压缩,到底是怎么工作的?
算法
必须会一定会7 小时前
Agent Plugins 1.0实战:plugin.json、skills、mcp.json目录结构与迁移
开发语言·人工智能·ai编程
St_rive7 小时前
Page Object设计模式
java·开发语言·设计模式
wp123_17 小时前
硬件元器件笔记|IPX8 防水 Type‑C 母座安费诺 124018802112A 与 TONEVEE TY48086‑24A 分析
c语言·开发语言·笔记
wuyk5557 小时前
4.树:一对多的层次数据结构
开发语言·数据结构·stm32·单片机
watersink8 小时前
机器学习聚类算法
算法·机器学习·聚类
luj_17689 小时前
桥牌思维启示:系统设计的模块化架构
c语言·开发语言·c++·经验分享·算法
会周易的程序员9 小时前
aiDgePLC iec61131 虚拟机 完整使用文档
c++·物联网·架构·st·iec61131