当前位置: 首页 > news >正文

红绿二分查找

《英雄算法零基础》之 二分查找

https://articles.zsxq.com/id_ib4xgs0cogic.html

在写模版之前我们先搞清楚二分查找是怎样运行的,我们把一个数组分成红绿两种颜色,可以理解为绿色就是符合情况的,红色就是不符合情况的(类似红绿灯,红灯停绿灯行)

isGreen函数

条件判定

判断一个元素是绿色还是红色,我们可以单独用一个函数来实现,根据题意,当值为1时代表绿色,值为0时代表红色,实现如下:

class Solution {// 红红红红红红 绿绿绿绿绿绿int isGreen(int val, int x){if (val == x)return 1;elsereturn 0;}

二分枚举模板

int binarySearch(int left, int right, int x) // 1
{while (left + 1 < right)                 // 2{int mid = left + (right - left) / 2; // 3if (isGreen(mid, x))                 // 4right = mid;                     // 5elseleft = mid;                      // 6}return right;						     // 7}
};  
  1. left代表红色游标,right代表绿色游标;
  2. 当区间长度大于2的时候,二分缩小区间,这一步被称为区间收敛;
  3. mid 为计算出来的区间[left, right]的中点;
  4. 判断区间中点对应的元素是 绿色 还是 红色;
  5. 如果中点元素绿色,则从中点到right的值都为 绿色,用中点替换绿色游标;
  6. 如果 中点元素红色,则从left到中点的值都为红色,用中点替换红色游标;
  7. 这个地方是模板需要变通的地方,如果需要返回红色边界,那么应该返回left;反之,如果需要返回绿色边界则应该返回right。这个模板中是返回后者
http://www.lryc.cn/news/362351.html

相关文章:

  • C51单片机 串口打印printf重定向
  • PieCloudDB Database Flink Connector:让数据流动起来
  • 主机CPU访问PCIe设备内存空间和PCIe设备访问主机内存空间
  • 在家AIAA(美国航空航天学会)文献如何查找下载
  • dnf手游版游玩感悟
  • 安卓如何书写注册和登录界面
  • 黄仁勋的AI时代:英伟达GPU革命的狂欢与挑战
  • Linux云计算架构师涨薪班课程内容包含哪些?
  • c语言:自定义类型(枚举、联合体)
  • 2024年适合GISer参加的全国性比赛
  • 番外篇-用户购物偏好标签BP-推荐算法ALS
  • 气膜体育馆的防火性能分析—轻空间
  • 什么台灯对眼睛好?一文给你分享具体什么台灯对眼睛好!
  • python-bert模型基础笔记0.1.00
  • STM32G030C8T6:EEPROM读写实验(I2C通信)--M24C64
  • opencascade 布尔运算笔记
  • GPT-4o:人工智能新纪元的突破与展望
  • 标准化、信息化、数字化、智能化、智慧化与数智化
  • 14-JavaScript中的点操作符与方括号操作符
  • 智慧大屏是如何实现数据可视化的?
  • 【JVM精通之路】垃圾回收-三色标记算法
  • Redis缓存(笔记一:缓存介绍和数据库启动)
  • OrangePi Kunpeng Pro套装测评:开箱与基本功能测试
  • RocketMQ教程(二):RocketMQ以及控制台的安装
  • 电脑记事本怎么恢复之前的内容记录
  • Windows下设置pip代理(proxy)
  • 【调试笔记-20240530-Linux-在 OpenWRT-23.05 上为 nginx 配置 HTTPS 网站】
  • 安装 hbase(伪分布式)
  • Angular-数组循环
  • 初级网络工程师之入门到入狱(一)