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 表示目标元素不存在。

相关文章
|
2月前
|
存储 人工智能 算法
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
这篇文章详细介绍了Dijkstra和Floyd算法,这两种算法分别用于解决单源和多源最短路径问题,并且提供了Java语言的实现代码。
79 3
数据结构与算法细节篇之最短路径问题:Dijkstra和Floyd算法详细描述,java语言实现。
|
2月前
|
机器学习/深度学习 存储 缓存
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
文章主要介绍了排序算法的分类、时间复杂度的概念和计算方法,以及常见的时间复杂度级别,并简单提及了空间复杂度。
28 1
数据结构与算法学习十:排序算法介绍、时间频度、时间复杂度、常用时间复杂度介绍
|
26天前
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
|
2月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
35 4
|
2月前
|
前端开发 JavaScript
JS-数据筛选
JS-数据筛选
34 7
|
2月前
|
JavaScript 数据安全/隐私保护
2024了,你会使用原生js批量获取表单数据吗
2024了,你会使用原生js批量获取表单数据吗
50 4
|
2月前
|
算法 C# 索引
C#二分查找算法
C#二分查找算法
|
2月前
|
搜索推荐 算法
数据结构与算法学习十四:常用排序算法总结和对比
关于常用排序算法的总结和对比,包括稳定性、内排序、外排序、时间复杂度和空间复杂度等术语的解释。
21 0
数据结构与算法学习十四:常用排序算法总结和对比
|
2月前
|
存储 算法 C语言
【C语言】二分查找算法
【C语言】二分查找算法
|
2月前
|
机器学习/深度学习 搜索推荐 算法
探索数据结构:初入算法之经典排序算法
探索数据结构:初入算法之经典排序算法
下一篇
无影云桌面