js 二分查抄

二分查找,也称折半查找,是一种在有序数组中查找目标值的算法。


文章来源地址https://www.toymoban.com/diary/js/241.html

它的基本思想是将数组分成两个部分,判断目标值在哪一部分中,然后递归地在该部分中进行查找,直到找到目标值或者确定目标值不存在为止。下面是使用 JavaScript 实现二分查找的代码:


function binarySearch(arr, target) {
  let low = 0;
  let high = arr.length - 1;

  while (low <= high) {
    let mid = Math.floor((low + high) / 2);

    if (arr[mid] === target) {
      return mid;
    } else if (arr[mid] < target) {
      low = mid + 1;
    } else {
      high = mid - 1;
    }
  }

  return -1;
}


这个函数接受一个有序数组和一个目标值作为参数,返回目标值在数组中的下标。如果目标值不存在于数组中,则返回 -1。

下面是这个函数的使用示例:


const arr = [1, 3, 5, 7, 9];
console.log(binarySearch(arr, 3)); // 输出 1
console.log(binarySearch(arr, 6)); // 输出 -1


这个示例中,我们定义了一个有序数组 [1, 3, 5, 7, 9],然后使用 binarySearch 函数查找其中的值 3 和 6。由于 3 存在于数组中,因此函数返回 1;而 6 不存在于数组中,因此函数返回 -1。


在实际应用中,二分查找可以用于快速查找有序数组中的元素,时间复杂度为 $O(\log n)$,比线性查找的时间复杂度 $O(n)$ 更加高效。



到此这篇关于js 二分查抄的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/js/241.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年08月19日 16:46
下一篇 2023年08月19日 16:46

相关文章

  • 276.【华为OD机试】矩阵匹配(二分法—Java&Python&C++&JS实现)

    🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年04月29日
    浏览(31)
  • 258.【华为OD机试真题】部门人力分配(二分搜索-Java&Python&C++&JS实现)

    🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年02月19日
    浏览(38)
  • 263.【华为OD机试真题】孙悟空吃蟠桃(二分查找-Java&Python&C++&JS实现)

    🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(JavaPythonC++JS分别实现),详细代码讲解,助你深入学习,深度掌握!

    2024年02月20日
    浏览(35)
  • JS基础-初识JavaScript

    前面讲了前端开发必备的三种语言。其中的HTML、CSS我们基本上有了比较正确的认识。这里讲一下JavaScript。 语言 功能 结构层 HTML 搭建结构、放置部件、描述定义 样式层 CSS 美化页面、实现布局 行为层 JavaScript 实现交互效果、数据收发、表单验证 HTML构成了基础的骨架。 CSS

    2024年02月10日
    浏览(31)
  • JavaScript(JS基础)

    提示:JS的重点是让静态的页面产生一些变化 提示:JavaScript是弱类型语言,行尾分号可写可不写 首先看下Java 与 JavaScript什么关系 JS编写在 script (脚本)标记中, script 标记可以出现在html中的任意位置,也就是说JS代码可以嵌入在HTML中任意部分,从上到下依次执行 script引入外

    2024年02月11日
    浏览(40)
  • JavaScript深拷贝(js深拷贝,JavaScript递归函数,实现深拷贝)

    简述:JavaScript的深拷贝和浅拷贝大家都比较熟悉,今天来分享下深拷贝,就是使用该函数时,会复制拷贝一份该数据,修改该数据属性,不会改变原有数据,就是把复制的对象所引用的对象全都复制了一遍,具体实现如下; 1、定义拷贝对象; 2、定义递归函数deepClone(),实现

    2024年02月15日
    浏览(49)
  • 【Anime.js】——JavaScript动画库:Anime.js——学习笔记

    目录 一、搭建开发环境  二、基本功能和使用 开始制作动画 动画属性 三、anime.stagger——交错动画 四、timeline——时间轴  五、控制、回调与助手 一、控制  二、回调 三、助手 六、easings——动画运动曲线 七、SVG动画 官网定义: anime.js 是一个简便的JS动画库,用法简单而

    2024年02月01日
    浏览(33)
  • 【JavaScript】JS语法入门到实战

    JavaScript (简称 JS) 是世界上最流行的编程语言之一 是一个脚本语言, 通过解释器运行 主要在客户端(浏览器)上运行, 现在也可以基于 node.js 在服务器端运行 JavaScript 最初只是为了完成简单的表单验证(验证数据合法性),结果后来不小心就火了。当前 JavaScript 已经成为了一个通用

    2024年02月09日
    浏览(45)
  • 【JavaScript】JS——Map数据类型

    存储键值对的对象。 能够记住键的原始插入顺序 任何值(对象或原始值)都可以作为键或值。 Map中的一个键 只能出现一次 ,新的值会覆盖旧的值。 迭代方式:for…of循环,返回一个 [key,value] 的数组。 键的相等:基于零值相等比较 Map与Object的比较 Map默认不包含任何键。

    2024年02月04日
    浏览(41)
  • JavaScript:js数组/对象遍历方法

    一、js遍历方法 序号 方法 描述 1 for 使用最基本的for循环可以遍历数组 2 for of for...of语句用来遍历可迭代对象(包括数组、Set、Map、字符串等),它可以替代传统的for循环和forEach()方法。for...of循环每次迭代都将返回一个值,而不是索引。 3 for in for...in语句用来遍历对象的可

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包