分治法之二分查找

思路:

  1. 确定查找范围:开始时,将整个有序数组作为查找范围。
  2. 比较中间元素:计算查找范围的中间元素的索引 mid,并将其与目标值进行比较。
    • 如果中间元素等于目标值,则查找成功,返回中间元素的索引。
    • 如果中间元素大于目标值,则在左半部分继续查找,将查找范围缩小为左半部分。
    • 如果中间元素小于目标值,则在右半部分继续查找,将查找范围缩小为右半部分。
  3. 递归查找:根据比较结果,选择在左半部分或右半部分继续进行折半查找,直到找到目标值或查找范围为空。
  4. 查找结果:如果找到目标值,返回其索引;否则返回一个表示未找到的标识(如-1)。

注意:二分查找的数组是有序的数组

代码:

#include <iostream>
using namespace std;// 递归实现折半查找
int binarySearch(int arr[], int left, int right, int target) {if (left >= right) {return -1;}int mid = (left + right) / 2;// 如果目标值与中间元素相等,则返回中间元素的索引if (arr[mid] == target) {return mid;}// 如果目标值小于中间元素,则在左半部分继续查找if (arr[mid] > target) {return binarySearch(arr, left, mid - 1, target);}// 否则,在右半部分继续查找return binarySearch(arr, mid + 1, right, target);// 如果未找到目标值,返回-1表示未找到}int main() {int arr[] = { 2, 3, 4, 10, 40 };int n = sizeof(arr) / sizeof(arr[0]);int target;cin >> target;int result = binarySearch(arr, 0, n - 1, target);cout << "目标值在索引 " << result << " 处找到";return 0;
}

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

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

相关文章

el-table实现动态表头

1.1el-table渲染 <el-tableref"refreshTable":data"tableData"highlight-current-row><el-table-columnfixedwidth"170px"label"测点"align"center"prop"测站名称"/><el-table-column label"…

Android 横竖屏切换 窗口全屏

Android 横竖屏切换 窗口全屏 窗口设置为全屏 废话不多说直接上代码 首先在AndroidManifest的Activity下设置screenOrientation和configChanges - android:configChanges"orientation|screenSize"- android:screenOrientation"fullSensor"一个是设置屏幕取…

SpringBoot入门教程

Spring Boot 是由Spring框架团队推出的一款用来简化Spring应用程序创建和开发过程的框架&#xff0c;它基于Spring框架&#xff0c;使用约定优于配置&#xff0c;大大简化了Spring应用程序的配置和开发过程。在很多企业中&#xff0c;Spring Boot 已经被广泛应用&#xff0c;成…

浅谈安科瑞可编程电测仪表在老挝某项目的应用

摘要&#xff1a;本文介绍了安科瑞多功能电能表在老挝某项目的应用。AMC系列交流多功能仪表是一款专门为电力系统、工矿企业、公用事业和智能建筑用于电力监控而设计的智能电表。 Abstract&#xff1a;This article introduces the application of the multi-function energy …

Arrays.asList(T... a)导致的事故

&#x1f4da;项目场景: 修改数据时&#xff0c;允许将非必填字段清空。 ⛔问题描述: 由于使用的是Mybatis-Plus&#xff0c;只能使用LambdaUpdateWrapper或UpdateWrapper通过set(column,val)来将字段清空&#xff1b;因为字段太多导致大量set放在一个方法&#xff0c;不符合…

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNNs&#xff09;2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…

L1-010:比较大小

题目描述 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8输出样例: 2->4->8 程序代码 #include<stdio.h&…

基于YOLOv8深度学习的安全帽目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…

Git——使用Git进行程序开发

主要介绍个人开发提交记录的主要流程&#xff0c;包括以下内容&#xff1a; 索引- 提交的暂存区。查看工作的状态和内部变更。如何读取用于描述变更的已扩展统一diff格式。支持查询和交互的提交&#xff0c;修改提交。创建、显示和选择&#xff08;切换&#xff09;分支。切换…

面试:如何故意减慢网站速度?

面试问题&#xff1a;假设你为你的客户建立了一个网站。但他没有定期支付费用。现在你想放慢他的网站速度&#xff0c;但又不想让他立即发现。你会怎么做&#xff1f; 我&#xff1a;用较慢的算法和其他与编码相关的选项替换代码中使用的算法。 面试问题&#xff1a;问在这种情…

婴儿专用洗衣机有必要买吗?宝宝洗衣机洗衣服

我们都知道刚出生的宝宝抵抗力较弱&#xff0c;很容易因为细菌感染然后生病&#xff0c;宝宝接触最多的就是衣服&#xff0c;我们在手洗的过程很难把衣服上的细菌清洗掉&#xff0c;而使用我们传统的洗衣机很容易造成细菌的第二次感染&#xff0c;很容易将宝宝的抵抗力弄得越来…

如何通过linux调用企业微信发送告警消息

一、前期准备 1、企业微信具备管理企业权限。 2、服务器有公网IP或者可以将本机端口通过net映射到公网。 二、通过脚本向企业微信发送消息 1、创建sh脚本用来发送消息。 vim 2.sh 注意&#xff1a;脚本中xxxx信息需要在企业微信管理后台获取。 #!/bin/bash # 设置企业…

2023年计网408

第33题 33.在下图所示的分组交换网络中&#xff0c;主机H1和H2通过路由器互连&#xff0c;2段链路的带宽均为100Mbps、 时延带宽积(即单向传播时延带宽)均为1000bits。若 H1向 H2发送1个大小为 1MB的文件&#xff0c;分组长度为1000B&#xff0c;则从H1开始发送时刻起到H2收到…

MySQL 学习笔记(刷题篇)

SQL进阶挑战 聚合分组查询 SQL123 select tag, difficulty, round((sum(score) - max(score) - min(score) ) / (count(score) - 2) ,1) as clip_avg_score from examination_info as ei, exam_record as er where ei.exam_id er.exam_id and ei.tag SQL and ei.diffi…

代码随想录刷题题Day2

刷题的第二天&#xff0c;希望自己能够不断坚持下去&#xff0c;迎来蜕变。&#x1f600;&#x1f600;&#x1f600; 刷题语言&#xff1a;C / Python Day2 任务 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵 II 1 有序数组的平方&#xff08;重点&#xff1a;双指针…

将项目放到gitee上

参考 将IDEA中的项目上传到Gitee仓库中_哔哩哔哩_bilibili 如果cmd运行ssh不行的话&#xff0c;要换成git bash 如果初始化后的命令用不了&#xff0c;直接用idea项放右键&#xff0c;用git工具操作

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前&#xff0c;最好看一下之前的文章&#xff0c;比较方便我们理解 XXL-Job详解&#xff08;一&#xff09;&#xff1a;组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

前端对浏览器的理解

浏览器的主要构成 用户界面 &#xff0d; 包括地址栏、后退/前进按钮、书签目录等&#xff0c;也就是你所看到的除了用来显示你所请求页面的主窗口之外的其他部分。 浏览器引擎 &#xff0d; 用来查询及操作渲染引擎的接口。 渲染引擎 &#xff0d; 用来显示请求的内容&#…

中国丙烯基弹性体PBE市场调研与预测报告(2023版)

内容简介&#xff1a; 丙烯基弹性体&#xff08;PBE&#xff09;是以丙烯为主要原料&#xff0c;加入少量乙烯&#xff08;或α-烯烃&#xff09;单体经溶液聚合而得到的以无定形区域为主的低结晶聚合物。与传统的乙丙橡胶不同&#xff0c;PBE的乙烯含量通常低于20%&#xff0…

某60区块链安全之薅羊毛攻击实战一学习记录

区块链安全 文章目录 区块链安全薅羊毛攻击实战一实验目的实验环境实验工具实验原理实验内容薅羊毛攻击实战一 实验步骤EXP利用 薅羊毛攻击实战一 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约薅羊毛攻击漏洞 找到合约漏洞进行分析并形成利用 实验环境 Ubun…