返回介绍

搜索算法

发布于 2024-07-13 20:32:14 字数 3644 浏览 0 评论 0 收藏 0

搜索算法简单来说就是用于找出数组中某个元素的下标。

JavaScript 语言中的自带的搜索:数组的 indexOf 方法。

顺序搜索

顺序搜索(Sequential Search)算法是一种简单的搜索算法,它按顺序检查列表中的每个元素,直到找到目标元素或遍历完整个列表。

代码实现:

function sequentialSearch(array, target) {
    // 遍历数组中的每个元素
    for (let i = 0; i < array.length; i++) {
        // 如果当前元素等于目标元素,则返回当前元素的索引
        if (array[i] === target) {
            return i
        }
    }
    // 如果未找到目标元素,则返回 -1
    return -1
}

// 测试
console.log(sequentialSearch([1, 2, 3, 4, 5], 0)) // -1
console.log(sequentialSearch([1, 2, 3, 4, 5], 3)) // 2

顺序搜索的时间复杂度为 O(n),其中 n 是列表的长度。

二分搜索

二分搜索(Binary Search)是一种高效的搜索算法,适用于有序数组。该算法通过重复将搜索范围缩小为一半来找到目标值。

function binarySearch(arr, target) {
  let low = 0 // 搜索范围的最低索引
  let high = arr.length - 1 // 搜索范围的最高索引

  while (low <= high) {
    const mid = Math.floor((low + high) / 2) // 中间索引

    if (arr[mid] === target) {
      return mid // 找到目标元素,返回索引
    }
    if (arr[mid] < target) {
      low = mid + 1 // 目标元素在右半部分,调整搜索范围的最低索引
    } else {
      high = mid - 1 // 目标元素在左半部分,调整搜索范围的最高索引
    }
  }

  return -1 // 目标元素未找到
}

// 测试
console.log(binarySearch([1, 2, 3, 4, 5], 0)) // -1
console.log(binarySearch([1, 2, 3, 4, 5], 3)) // 2

二分搜索的时间复杂度为 O(log n),其中 n 是数组的长度。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文