从入门到精通,30天带你学会C++【第十一天:二分查找】

目录

Everyday English

前言

二分查找

例题

50分做法

分析利弊

示例代码

示例截图

100分做法

二分查找是什么?

这题该怎么用二分查找?

示例代码

示例截图

结尾


Everyday English

Look before you leap.

三思而后行

前言

今天是2024年的第一天,新一年,新气象,新起点,在这也祝愿大家:

工作顺利,身体健康。好好学习,天天向上!

二分查找

二分法我们在上节课已经介绍过了,这节课我们来实现二分查找。

没看过的一定要先看:

从入门到精通,30天带你学会C++【第十天:猜数游戏】-CSDN博客文章浏览阅读2次。【全网最细】猜数游戏他终于来了,内涵必胜策略哦!https://blog.csdn.net/m0_73787047/article/details/135323413

例题

先看题目:给定一个长度为n序列和一个整数m,问:这个序列里面有没有m?

50分做法

分析利弊

把整个数组遍历一遍,看看有没有m。

优点:简单粗暴,容易想到。

缺点:数据一多,轻松超时。

示例代码
#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,m,a[100000];cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){if(a[i]==m) {cout<<"Yes"<<endl;return 0;}}cout<<"No"<<endl;return 0;
}
示例截图

100分做法

这就需要用到我们的二分查找了。

注意:二分查找一定要是有序的序列!

二分查找是什么?

回忆一下我们上次的猜数游戏的必胜策略,从始至终都是有一个范围的,我们通过不断地把范围二分缩小,最终得到答案。

在二分查找中也要有一个范围,或者叫区间。在这个区间有两个端点,分别叫左端点和右端点。

那我们二分还得有个中点,就像猜数游戏每次都要猜区间地一半一样。

而中点地计算方法是:(左端点+右端点)/ 2

为了方便描述,我们在编程中一般把左端点叫作left,右端点叫作right,中点叫作mid。

这题该怎么用二分查找?

我们可以先把序列用sort排序一下,紧接着确定好左右端点及mid。

其实这两个端点就像两个指针一样

如果left+1==right的话,说明两个指针不能在缩小了,此时,如果还未找到输出no。

示例代码
#include<bits/stdc++.h>
using namespace std;
int main()
{long long n,m,a[100000],left,right,mid;cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];sort(a+1,a+n+1);left=1; right=n;while(left+1!=right){mid=(left+right)/2;if(a[mid]>m) right=mid-1;if(a[mid]<m) left=mid+1;if(a[mid]==m){cout<<"Yes"<<endl;return 0;}}cout<<"No"<<endl;return 0;
}
示例截图

结尾

最后认识一下,我是爱编程的小芒果,一个爱编程的小学生,我们2024年见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/589684.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高创驱动器设置备忘

1&#xff1a;高创驱动器连接软件SVRstudio 有一代和二代&#xff0c;这里为了简述方便称SV1,SV2版本&#xff0c;它们都可以连接驱动器&#xff0c;只是使用界面上有些差异而已&#xff0c;为了设置方便的需要&#xff0c;建议同时安装两个版本&#xff1b; 2&#xff1a;通常…

爬取糖豆视频

爬虫案例积累&#xff0c;以爬取糖豆视频为例&#xff1a; 爬取视频类型的数据一般步骤&#xff1a; 1.点击media,刷新&#xff0c;播放一个视频&#xff0c;会刷新一个包&#xff0c;点击发现是播放视频的包&#xff0c; 2.复制这个包url中的关键字&#xff0c;在搜索框中进…

在宝塔Linux中安装Docker

前言 帮助使用宝塔的用户快速上手docke的安装 &#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Docker》。&#x1f3af;&#x1f3af…

[新版Hi3531DV200 性能强悍]

新版Hi3531DV200 性能强悍 Hi3531DV200是针对多路高清/超高清&#xff08;1080p/4M/5M/4K&#xff09;DVR产品应用开发的新一代专业SoC芯片。Hi3531DV200集成了ARM A53四核处理器和性能强大的神经网络推理引擎&#xff0c;支持多种智能算法应用。同时&#xff0c;Hi3531DV200还…

Spring Boot Admin健康检查引起的Spring Boot服务假死

问题现象 最近在spring boot项目中引入了 spring-boot-starter-actuator 后&#xff0c;测试环境开始出现服务假死的现象&#xff0c; 且这个问题十分怪异&#xff0c;只在多个微服务中的简称A的这个服务中出现&#xff0c;其他服务都没有出现这个问题&#xff0c; 之所以说…

C#学习笔记 - C#基础知识 - C#从入门到放弃 - C# Windows窗体技术及基础控件(一)

C# 入门基础知识 - C# Windows窗体技术及基础控件 第12节 Windows窗体技术及基础控件12.1 创建Winform 程序12.2 窗体的添加与删除12.3 窗体的常用属性12.4 窗体的常用事件12.5 窗体中添加控件与窗体显示和隐藏12.6 MDI 窗体12.7 窗体中控件的基本操作 更多C#基础知识点可查看&…

按照故障码类型分类的API接口

随着汽车的普及&#xff0c;车辆故障也成为了一个不可忽视的问题。对于车主来说&#xff0c;及时了解故障码的含义以及解决方案十分重要。挖数据平台为解决这一问题&#xff0c;提供了一套按照故障码类型分类的API接口&#xff0c;用于查询车辆故障、故障码适用品牌以及提供相应…

STL——queue容器

1.queue基本概念 概念&#xff1a;queue是一种先进先出&#xff08;First In First Out,FIFO&#xff09;的数据结构&#xff0c;它有两个出口。 队列容器允许从一端新增元素&#xff0c;从另一端移除元素。 队列中只有队头和队尾才可以被外界使用&#xff0c;因此队列不允许…

PHP调用系统命令/其他应用程序 并获取应用返回值的方法

PHP应用可以非常简单的调用系统中的任意应用程序并获取其返回值, 即与其他应用程序通信和整合. 使用PHP内置函数 popen, proc_open 函数即可轻松实现, 以下为示例代码: <?php error_reporting(E_ALL);/* 加入重定向以得到标准错误输出 stderr。 */ $cmd "/path/to/…

Java API 操作Docker浅谈

背景&#xff1a; 使用com.github.docker-java库可以很方便地在Java中操作Docker。下面是一个详细的教程&#xff0c;包括创建镜像、创建容器、启动容器、停止容器和删除容器的步骤以及每一步的说明。 前提&#xff1a; 首先&#xff0c;在你的Java项目中添加com.github.doc…

P8598 [蓝桥杯 2013 省 AB] 错误票据

题目背景 某涉密单位下发了某种票据&#xff0c;并要在年终全部收回。 题目描述 每张票据有唯一的 ID 号&#xff0c;全年所有票据的 ID 号是连续的&#xff0c;但 ID 的开始数码是随机选定的。因为工作人员疏忽&#xff0c;在录入 ID 号的时候发生了一处错误&#xff0c;造…

LLM、AGI、多模态AI 篇二:Prompt编写技巧

文章目录 系列生成图片(Stable Diffusion)生成文章(ChatGPT)代码生成(GitHub Copilot)Prompt编写模式Prompt模板Prompt 即代码系列 LLM、AGI、多模态AI 篇一:开源大语言模型简记 LLM、AGI、多模态AI 篇二:Prompt编写技巧 生成图片(Stable Diffusion) 视角和构图。 …

Linux之组管理和权限管理

组的概念 如图所示&#xff1a;test.txt是由tom创建的&#xff0c;所以tom是文件的所有者&#xff0c;tom归属于组A&#xff0c;组A就是文件的所在组&#xff1b;组B就是文件的其他组。 所有者 谁创建了文件&#xff0c;谁就是文件的所有者。 查看文件的所有者 指令&…

2024 计划

学习 brpc源码 netty源码 ace源码 《Javascript高级程序设计》 《《Full-stack web development with Vue.js and Node build scalable and powerful web apps with modern web stack, MongoDB, Vue, Node.js, and Express》&#xff08;之前没有看完&#xff09; 生活 每周…

Django 学习教程- Hello world入门案例

系列 Django 学习教程-介绍与安装-CSDN博客 欢迎来到第Djagno学习教程第二章Hello World 入门案例。 在本教程中&#xff0c;我将引导您完成django的Hello World入门案例。 让我们开始吧&#xff01; 版本 Django 5.0Python 3.10 创建项目 安装 Django 之后&#xff0…

信创之国产浪潮电脑+统信UOS Linux操作系统体验10:visual studio code中调试C++程序

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 老猿在CSDN的《信创之国产浪潮电脑统信UOS操作系统体验2&#xff1a;安装visual studio code和cmake搭建C开发环镜》介绍了在国产浪潮电脑统信UOS操作系统中安装visual studio code和cmake搭建C开…

css动态传参,attr的妙用

今天再做一个编辑器的功能的时候&#xff0c;发现有一段非常奇妙的代码&#xff0c;使用attr获取div标签的data-label值。 css的attr?What fuck?这又是什么鬼东西&#xff0c;emmm。 查询后官方是这么回答的&#xff1a; CSS 表达式 attr() 用来获取选择到的元素的某一 HTM…

GO语言基础笔记(八):高级特性与性能优化

目录 反射&#xff08;Reflection&#xff09; 反射概念 反射的关键概念 反射的常见用途 代码示例 1. 检查类型和值 2. 修改变量值 3. 调用函数 4. 结构体反射 并发模式&#xff08;Concurrency Patterns&#xff09; 1. Worker Pool 模式 工作原理 在代码中的体现…

Mybatis插件运行原理及自定义插件

引言 MyBatis是一个流行的持久层框架&#xff0c;它提供了许多强大的功能来简化数据库访问和映射。其中一个非常重要的特性是插件&#xff08;Interceptor&#xff09;&#xff0c;它允许开发者在MyBatis的执行过程中插入自定义逻辑&#xff0c;以实现对SQL执行过程的定制化。…

Unity坦克大战开发全流程——结束场景——通关界面

结束场景——通关界面 就照着这样来拼 写代码 hideme不要忘了 修改上一节课中的代码