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

【JS】二分查找

题目

步骤

  1. 初始化指针:定义 left 和 right 两个指针,分别指向数组的起始位置和末尾位置,确定查找范围。
  2. 进入循环:只要 left 小于等于 right,就继续执行循环,因为此时查找范围不为空。
  3. 计算中间索引:通过公式 left + Math.floor((right - left) / 2) 计算中间位置 mid,以找到当前查找范围的中间元素。
  4. 比较与调整:将中间元素 nums[mid] 与目标值 target 进行比较。如果 nums[mid] 大于 target,说明目标值在中间元素的左侧,将 right 指针更新为 mid - 1,缩小查找范围到左半部分;如果 nums[mid] 小于 target,说明目标值在中间元素的右侧,将 left 指针更新为 mid + 1,缩小查找范围到右半部分;如果 nums[mid] 等于 target,则表示找到了目标值,直接返回 mid
  5. 查找失败处理:当循环结束时,如果仍未找到目标值,说明目标值不在数组中,返回 -1

示例代码 

var search = function (nums, target) {

    var left = 0, right = nums.length - 1;
    while (left <= right) {
        var mid = left + Math.floor((right - left) / 2);
        if (nums[mid] > target) {
            right = mid - 1;
        } else if (nums[mid] < target) {
            left = mid + 1;
        } else {
            return mid;
        }

    }
     return -1;
};

欢迎指正! 

相关文章:

  • java流程控制12:流程控制练习
  • Linux下创建svn库 和 svn安装与操作
  • windows10下PointNet官方代码Pytorch实现
  • vue实现大转盘抽奖
  • 内网文件传输新体验,聊天、传输、自定义,一应俱全
  • Kafka 中的生产者分区策略
  • `accept_ra` 和 `autoconf` 和 `forwarding` 的关系 笔记250404
  • Python爬取数据(二)
  • 剑指Offer(数据结构与算法面试题精讲)C++版——day7
  • 深度解析 n8n:强大的开源工作流自动化平台
  • 【12】RUST智能指针
  • 看雪 get_pwn3(2016 CCTF 中的 pwn3)
  • 25统计建模半自动化辅助排版模板及论文排版格式要求
  • 【Easylive】视频删除方法详解:重点分析异步线程池使用
  • 【HTML-CSS】
  • c++概念—内存管理
  • 【自记录】ubuntu命令行下禁用指定声卡
  • flutter修改 Container 中的 Text 和 Image 的样式
  • 2025年招投标行业的深度变革:洞察趋势,把握未来
  • ES6 新增特性 箭头函数
  • 医院网站建设报价/关键词如何快速排名
  • 网站收录后才可以做排名吗/企业seo关键字优化
  • 网站建设过时了吗/商业软文案例
  • 微信电商小程序有哪些/重庆seo主管
  • 北京哪里可以做网站/企业培训心得
  • 校园网网站建设/网页制作html代码