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

《二分查找算法:在有序数组中搜索目标值》

目录

一、问题分析

二、二分查找算法原理

三、代码实现


给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target,我们要写一个函数来搜索 nums 中的 target,如果目标值存在就返回它的下标,否则返回 -1。

一、问题分析

既然数组是有序的,那么我们自然而然地会想到一种高效的查找算法 —— 二分查找(Binary Search)。二分查找的基本思想是将查找区间不断缩小一半,直到找到目标元素或者确定目标元素不存在为止。

二、二分查找算法原理

  1. 首先,我们确定查找区间的左右边界。初始时,左边界 left 为 0,右边界 right 为数组的长度 n - 1
  2. 然后,在每一轮查找中,我们计算中间元素的下标 mid,计算公式为 mid = left + (right - left) // 2。这里使用 left + (right - left) // 2 而不是简单的 (left + right) // 2 是为了避免在 left 和 right 很大时出现整数溢出的情况。
  3. 接下来,我们比较中间元素 nums[mid] 和目标值 target
    • 如果 nums[mid] == target,那么我们就找到了目标值,直接返回 mid 即可。
    • 如果 nums[mid] < target,这说明目标值在中间元素的右侧,我们就将左边界 left 更新为 mid + 1,继续在右侧区间进行查找。
    • 如果 nums[mid] > target,这说明目标值在中间元素的左侧,我们就将右边界 right 更新为 mid - 1,继续在左侧区间进行查找。
  4. 不断重复上述步骤,直到左边界 left 大于右边界 right,这时候就说明目标值不存在于数组中,我们返回 -1。

三、代码实现

class Solution {public int search(int[] nums, int target) {int left = 0;int right = nums.length-1;while(left<=right){int mid = (left+right)/2;if(nums[mid]==target){//相等 找到啦return mid;}else if(nums[mid]<target){left = mid+1;}else{//目标值小right = mid-1;}}//没找到return -1;}
}

http://www.lryc.cn/news/478777.html

相关文章:

  • 【万字总结】数据结构常考应用大题做法画法详解_树_哈希表_图_排序大总结
  • Docker + Jenkins + gitee 实现CICD环境搭建
  • rabbitMq怎么保证消息不丢失?消费者没有接收到消息怎么处理
  • 商务数据分析在提升客户体验方面的作用体现在哪些环节
  • cooladmin使用整理
  • CentOS 7 更换软件仓库
  • 现代Web开发:React Hooks深入解析
  • HarmonyOS使用arkTS拉起指定第三方应用程序
  • flex安装学习笔记
  • 09-结构化搜索、搜索的相关性算分
  • 手机屏幕上进行OCR识别方案
  • 遗传算法与深度学习实战(22)——使用Numpy构建神经网络
  • react->Antd->Table调整checkbox默认样式
  • 一种ESB的设计
  • 上位机常用通信方式
  • Vue3中使用LogicFlow实现简单流程图
  • 《重学Java设计模式》之 工厂方法模式
  • 【大数据学习 | kafka】kafka的数据存储结构
  • 知识竞赛答题系统,线上答题小程序链接怎么做?
  • 基于SSM的社区物业管理系统+LW参考示例
  • android——jetpack startup初始化框架
  • 英伟达HOVER——用于人形机器人的多功能全身控制器:整合不同的控制模式且实现彼此之间的无缝切换
  • GEE代码学习 day17
  • 论文阅读笔记-Covariate Shift: A Review and Analysis on Classifiers
  • 基于SSM+VUE守护萌宠宠物网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解
  • 【在Linux世界中追寻伟大的One Piece】Socket编程TCP
  • 进入半导体行业需要具备哪些能力?
  • Nature重磅:AI化学家再升级!大幅提升实验效率,推动化学合成进入“智能化”新阶段
  • 源代码泄漏怎么办?SDC沙盒成为破局利器
  • 【论文复现】基于图卷积网络的轻量化推荐模型