JavaScript算法和数据结构:写一个二分查找的函数。

简介: JavaScript算法和数据结构:写一个二分查找的函数。

二分查找(Binary Search)是一种在有序数组中查找目标元素的有效算法。它通过反复将有序数组分成两半,然后确定目标元素在哪一半中,从而快速缩小搜索范围。

以下是一个简单的 JavaScript 实现二分查找的函数:

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

  while (left <= right) {
   
    const mid = Math.floor((left + right) / 2);

    if (arr[mid] === target) {
   
      return mid; // 目标元素找到,返回索引
    } else if (arr[mid] < target) {
   
      left = mid + 1; // 目标元素在右半部分
    } else {
   
      right = mid - 1; // 目标元素在左半部分
    }
  }

  return -1; // 目标元素不存在,返回 -1
}

// 示例
const sortedArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const targetElement = 6;
const result = binarySearch(sortedArray, targetElement);

if (result !== -1) {
   
  console.log(`元素 ${
     targetElement} 在数组中的索引为 ${
     result}`);
} else {
   
  console.log(`元素 ${
     targetElement} 不在数组中`);
}

在这个实现中,binarySearch 函数接受一个有序数组 arr 和目标元素 target 作为参数。它使用 leftright 两个指针来确定搜索范围,然后在循环中计算中间索引 mid。如果 arr[mid] 等于 target,则找到目标元素并返回索引;如果 arr[mid] 小于 target,则将搜索范围缩小到右半部分;如果 arr[mid] 大于 target,则将搜索范围缩小到左半部分。循环继续,直到找到目标元素或搜索范围为空,最终返回 -1 表示目标元素不存在。

相关文章
|
4月前
|
存储 监控 算法
局域网监控其他电脑的设备信息管理 Node.js 跳表算法
跳表通过分层索引实现O(logn)的高效查询、插入与删除,适配局域网监控中设备动态接入、IP映射及范围筛选等需求,相比传统结构更高效稳定,适用于Node.js环境下的实时设备管理。
176 9
|
6月前
|
算法 机器人 定位技术
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
【VRPTW】基于matlab秃鹰算法BES求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)(Matlab代码实现)
217 0
|
6月前
|
存储 监控 JavaScript
基于布隆过滤器的 Node.js 算法在局域网电脑桌面监控设备快速校验中的应用研究
本文探讨了布隆过滤器在局域网电脑桌面监控中的应用,分析其高效空间利用率、快速查询性能及动态扩容优势,并设计了基于MAC地址的校验模型,提供Node.js实现代码,适用于设备准入控制与重复数据过滤场景。
260 0
|
4月前
|
存储 监控 JavaScript
企业上网监控系统的恶意 URL 过滤 Node.js 布隆过滤器算法
布隆过滤器以低内存、高效率特性,解决企业上网监控系统对百万级恶意URL实时检测与动态更新的难题,通过概率性判断实现毫秒级过滤,内存占用降低96%,适配大规模场景需求。
321 3
|
4月前
|
存储 监控 算法
电脑管控软件的进程优先级调度:Node.js 红黑树算法
红黑树凭借O(log n)高效插入、删除与查询特性,适配电脑管控软件对进程优先级动态调度的高并发需求。其自平衡机制保障系统稳定,低内存占用满足轻量化部署,显著优于传统数组或链表方案,是实现关键进程资源优先分配的理想选择。
261 1
|
5月前
|
存储 算法 搜索推荐
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
专攻软考高频算法,深度解析二分查找、堆排序、快速排序核心技巧,对比九大排序算法,配套动画与真题,7天掌握45%分值模块。
263 1
软考算法破壁战:从二分查找到堆排序,九大排序核心速通指南
|
5月前
|
运维 监控 JavaScript
基于 Node.js 图结构的局域网设备拓扑分析算法在局域网内监控软件中的应用研究
本文探讨图结构在局域网监控系统中的应用,通过Node.js实现设备拓扑建模、路径分析与故障定位,提升网络可视化、可追溯性与运维效率,结合模拟实验验证其高效性与准确性。
332 3
|
5月前
|
机器学习/深度学习 传感器 算法
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
基于matlab瞬态三角哈里斯鹰算法TTHHO多无人机协同集群避障路径规划(目标函数:最低成本:路径、高度、威胁、转角)(Matlab代码实现)
227 1
|
9月前
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1427 58
|
6月前
|
机器学习/深度学习 算法 数据挖掘
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
【配送路径规划】基于螳螂虾算法MShOA求解带时间窗的骑手外卖配送路径规划问题(目标函数:最优路径成本 含服务客户数量 服务时间 载量 路径长度)研究(Matlab代码实现)
252 0