c++二分查找(往下看,有彩蛋)

小练习合集(讲解控制语句后续) 看完了前面详细的控制语句相关内容的讲解,再来看一下这里的一些小练习你会做嘛一定要看到最后哦,有彩蛋哒~~ 阅读详情

什么是二分查找?

有两个指针,分别为左指针和右指针分别指向待查找集合的首部和尾部,然后再定义一个中部指针等于首指针加尾指针除以二,如果过大,则左指针加一,如果过小,则右指针减一。

循环条件:左指针小于等于右指针。

二分查找基本模版:

int l=...;
int r=...;
while(l<=r){
    mid=(l+r)/2;
    if(...)l=mid+1;
    if(...)r=mid-1;
}

其实这篇文章是我一年前写的,一直扔在草稿箱,直到今天清理时才发现,将它写完。

既然都说到这了,那就讲一讲三分吧!!

简介
如果需要求出单峰函数的极值点,通常使用二分法衍生出的三分法求单峰函数的极值点。

为什么不通过求导函数的零点来求极值点?
客观上,求出导数后,通过二分法求出导数的零点(由于函数是单峰函数,其导数在同一范围内的零点是唯一的)得到单峰函数的极值点是可行的。

但首先,对于一些函数,求导的过程和结果比较复杂。

其次,某些题中需要求极值点的单峰函数并非一个单独的函数,而是多个函数进行特殊运算得到的函数(如求多个单调性不完全相同的一次函数的最小值的最大值)。此时函数的导函数可能是分段函数,且在函数某些点上可能不可导。

注意
只要函数是单峰函数,三分法既可以求出其最大值,也可以求出其最小值。为行文方便,除特殊说明外,下文中均以求单峰函数的最小值为例。

三分法与二分法的基本思想类似,但每次操作需在当前区间 [l, r](下图中除去虚 线范围内的部分)内任取两点 lmid, rmid(lmid < rmid)(下图中的两蓝点)。如 下图,如果 f(lmid) < f(rmid),则在 [rmid, r](下图中的红色部分)中函数必然 单调递增,最小值所在点(下图中的绿色部分)必然不在这一区间内,可舍去这一区 间。反之亦然。

注意 
在计算lmid和rmid时,需要防止数据溢出的现象出现。

三分法每次操作会舍去两侧区间中的其中一个。为减少三分法的操作次数,应使 两侧区间尽可能大。因此,每一次操作时的 lmid 和 rmid 分别取 mid − ε 和 mid + ε 是一个不错的选择。

代码实现

while (r - l > eps) {
  mid = (lmid + rmid) / 2;
  lmid = mid - eps;
  rmid = mid + eps;
  if (f(lmid) < f(rmid))
    r = mid;
  else
    l = mid;
}

 

csp信奥赛C++高频考点专项训练:【二分查找】案例3:保龄球 阅读详情

相关推荐

csp信奥赛C++高频考点专项训练:【二分查找】案例2:烦恼的高考志愿

csp信奥赛C++高频考点专项训练:【二分查找】案例2:烦恼的高考志愿

王老师青少年编程 1375

C++学习笔记——二叉搜索树

接下来的部分将会记录一些数据结构。有时候看一本书,就像欣赏一部电影,在无数的铺垫后,结局便浮现出来了。先来说一说第一个数据结构——二叉搜索树。 目录 概念 基础操作 创建 插入 查询 删除 彩蛋 概念 二叉搜索树,之所以是搜索树,是因为便于搜索。二叉搜索树可以说是堆的一种进化,因为堆的父亲结点总是比孩子结点大或者小,这要看是大堆还是小堆。那么二叉搜索数满足的是节点总是比左...

走过路过不要错过 715

csp信奥赛C++高频考点专项训练:【二分查找】案例4:[CSP-J 2022] 解密

csp信奥赛C++高频考点专项训练:【二分查找】案例4:[CSP-J 2022] 解密

王老师青少年编程 1312

程序设计实验之二分算法C++实现

B-四个数列 Sample Input 6 -45 22 42 -16 -41 -27 56 30 -36 53 -37 77 -36 30 -75 -46 26 -38 -10 62 -32 -54 -6 45 Sample Output 5 解:事实证明这道题暴力肯定会超时。根据老师在课堂上讲,可以先把A,B两个数组的数自由组合加起来,C,D两个数组的数自由组合加起来,然后利用...

ニャンコちゃん的博客 401

【GESP C++五级考试考点详细解读】

【GESP C++五级考试考点详细解读】

王老师青少年编程 2440

csp信奥赛C++必备英语词汇表

csp信奥赛C++必备英语词汇表

王老师青少年编程 704

1.跳表简介

跳表简介

做一个善良的人,做好自己的事,如果愿意,再发一份光。 790

CSP/信奥赛C++刷题训练:经典二分答案例题(3): Time Management S

CSP/信奥赛C++刷题训练:经典二分答案例题(3): Time Management S

王老师青少年编程 291

Dilhao的勇气(二分)c++

​链接:登录—专业IT笔试面试备考平台_牛客网来源:牛客网。

qq_62235017的博客 71

CSP/信奥赛C++刷题训练:经典二分答案例题(1):砍树

CSP/信奥赛C++刷题训练:经典二分答案例题(1):砍树

王老师青少年编程 1085

程序员的520爱情代码展示

代码不仅是逻辑与功能的体现,同样也可以作为一种情感表达的媒介。520在中国文化中被赋予了“我爱你”的特殊含义,成为了表达情感的一个符号。本章将深入探讨520代码创作的主题,了解其文化背景,创意来源及意义,并且展示如何通过不同的编程语言来表达个性化的情感。函数是执行特定任务的代码块。它们可以接受输入参数,执行一系列操作,并可选地返回值。函数使代码更加模块化,易于维护和重用。在JavaScript中,你可以这样定义一个函数:在使用变量和函数时,需要了解作用域的概念。

weixin_32836713的博客 1288

系统设计 024:从GFS到海量KV系统设计

本文深入剖析分布式存储系统GFS的核心设计,重点解析三副本策略、心跳机制和写入流程三大关键技术。通过对比分析不同方案的优劣,揭示GFS"2近1远"副本部署、从节点主动上报心跳、主副本转发写入等创新设计如何实现数据安全与性能的平衡。最后以一道系统设计面试题为例,演示100亿KV只读服务的正确设计思路:通过将索引全量加载到内存,避免磁盘查找带来的性能瓶颈。全文贯穿理论解析与实战案例,为后端工程师提供分布式存储系统的深度认知框架和面试解题方法论。

软件科学-郝学胜 4148

从零做出可发布的2D冒险游戏!Unity全流程实战指南:从资源搭建到打包发布,新手也能跟着做

项目配置→资源导入→核心模块开发→关卡设计→调试→打包发布;玩家控制→敌人AI→道具系统→UI系统→游戏管理器→音效系统;新手开发重点:先实现核心玩法(移动、跳跃、攻击),再补充UI、音效、存档等辅助功能;调试是关键:每实现一个功能就测试,避免最后一堆bug难以定位。从零做一款完整的2D冒险游戏,能快速提升你的Unity综合能力——不仅能掌握C#编程、2D物理、UI系统,还能理解游戏开发的完整流程。先做出基础版,再慢慢迭代优化,你会发现游戏开发并没有想象中那么难。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1179

拜托,面试别再问我跳表了!

何为跳表? 跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。 跳表详解 有序链表 考虑一个有序链表,我们要查找3、7、17这几个元素,我们只能从头开始遍历链表,直到查找到元素为止。 上述这个链表是有序的,但是不能使用二分查找,是不是很捉急?(P.S....

weixin_33860722的博客 112

LK32T102 单片机 操作GPIO实现流水灯(1)

前言: LK32T10232(32位)单片机是一款专为电机控制器和数字电源开发的高性能 MCU。采Cortex-M0 内核,最高工作频率可达 72Mhz,ADC 采样速率 达 1Msps。同时具备协处理器单元可满足各种乘法、除法、移位以及各种 复杂函数运算。 LK32T102(32位)支持单电源供电,且内嵌高精度高速及低速振荡器,以及具备 多种低功耗工作模式。同时,集成了多路增强型 PWM,多通道模拟比较 器和高速运算放大器,可满足多种电机及功率控制应用,并简化系统成本。...

qq_58676187的博客 3189

2025海外代理IP深度横评:Bright Data、IPFoxy、SmartProxy等六大服务商实战对比

本文深度横评2025年六大海外代理IP服务商(Bright Data、IPFoxy、SmartProxy、IPIPGO、Kookeey及青果网络),基于实战测试数据,从IP池质量、速度稳定性、性价比等维度进行对比。针对跨境电商、数据爬虫、社交媒体管理等不同业务场景,提供精准的选购指南与避坑建议,帮助企业用户根据自身需求选择最合适的代理IP解决方案。

weixin_29196891的博客 435

二叉搜索树(C++)

初阶版搜索二叉树

2401_83456040的博客 1035

AS7341光谱传感器实战:I2C驱动、Arduino与Python代码及校准指南

光谱传感器通过多通道滤光片与光电二极管阵列,将光信号转换为数字量,实现波长级测量。其技术价值在于以低成本替代传统光谱仪,完成颜色识别、光源分析等任务。在植物补光、水质检测等场景中,多通道光谱数据能精准区分红光与深红光比例。AS7341作为9通道(8可见光+1近红外)I2C传感器,支持Arduino、ESP32和树莓派,结合增益与积分时间调节,可适应强弱光环境。本文从芯片原理出发,详解寄存器配置、双平台代码实现、暗电流与白板校准方法,并给出常见问题排查指南,帮助创客快速构建光谱应用。

weixin_42519733的博客 253

【csp-j信奥赛初赛如何取得优异成绩】

csp-j信奥赛初赛如何取得优异成绩

王老师青少年编程 1611

汽车诊断服务(UDS——0x11服务解析)

ECU复位服务(0x11)详解:该服务支持硬件/钥匙开关/软件三种复位类型(0x01-0x03),复位前需发送肯定响应。请求格式为11+子功能,响应含51+子功能。典型应用需配合安全访问流程,测试时需监控CAN总线通信及DTC状态。复位后ECU将返回默认会话,期间不处理任何诊断请求。服务在编程会话且安全解锁后执行,硬复位会初始化存储数据。

从事汽车行业 979

保姆级教程:从零到飞,用QGC地面站搞定PX4无人机全流程配置(含避坑指南)

本文提供了一份详细的QGC地面站使用教程,指导用户从零开始配置PX4无人机,涵盖固件烧录、传感器校准、遥控器设置及航点规划等关键步骤,并包含实用的避坑指南,帮助新手顺利完成首飞。

weixin_30329623的博客 221

网易2017春招笔试真题解析:从动态规划到矩阵快速幂

在程序员求职中,算法与数据结构是笔试面试的必考基石。动态规划、贪心算法、矩阵快速幂等概念,是解决复杂问题的核心工具。理解这些算法的原理与适用场景,能够帮助候选人高效应对各类编程挑战。从复杂度分析到边界条件处理,系统掌握这些基础能力,是校招笔试取得好成绩的前提。通过拆解网易2017春招笔试真题,深入分析0-1背包转化、数字根数学化简、矩阵快速幂优化等典型题目,结合实战经验总结刷题方法论,为备战春招的开发者提供切实可行的提升路径。

weixin_34296641的博客 685

Calibre:LVS 快速debug short/open技巧

用Fix Suggestion和Short Isolate两种方法debug LVS问题

m0_61544122的博客 7461

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 252

uniapp - 实现APP后台持续定位+手机息屏后能持续上传位置信息数据,详解后台保活持续运行+手机锁屏保证后台持续/实时定位的解决方案及示例源码(完美兼容安卓android与苹果ios系统手机)

使用uniapp开发app实现后台保活定位能力,uniapp实时定位保活 息屏定位后台运行,uniapp APP实时定位高德 后台运行 支持锁屏息屏运行,持续获取定位信息,uniapp App端后台间隔时间发送定位功能实现,UniApp实现手机应用常活,固定时间内上传手机位置信息,后台(或锁屏)持续/实时定位的实现方案,uni-app后台持续定位,锁屏后能持续上传位置信息,实现后台定位持续无限制定位高德定位,百度定位,UniApp后台持续定位保如何在APP退到后台时保持定位服务,uniapp 切换app仍能

🏆 前端领域优质创作者 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 322

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 洛谷最新题解P1782旅行商的背包
下一篇: 洛谷P1441砝码称重(二进制讲法)
火龙果king
博客等级 码龄5年 89粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值