二分 搜索

Posted 沿着路走到底

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分 搜索相关的知识,希望对你有一定的参考价值。

二分搜索的思路

从数组的中间元素开始,如果中间元素正好是目标值,则搜索结束。

如果目标值大于或小于目标元素,则在大于或小于中间元素的那一半数组中搜索。

二分搜索的前提是数组是有序的,如果数组是乱序的,则首先要先对数组进行排序。

时间复杂度

每一次比较都使搜索范围缩小一半。

O(LogN)

const arr = [1, 2, 3, 4, 5]

function binarySearch(item) 
  let low = 0;
  let high = arr.length - 1

  while(low <= high) 
    const mid = Math.floor((low + high) / 2)
    const element = arr[mid]

    if (element < item) 
      low = mid + 1
     else if (element > item) 
      high = mid - 1
     else 
      return mid
    
  

  return -1



console.log(binarySearch(2))

1

以上是关于二分 搜索的主要内容,如果未能解决你的问题,请参考以下文章

搜索插入位置--二分查找

找出升序排序数组第一个小于目标值的所有下标,第一个大于目标值的所有下标——四次二分搜索

Leetcode -- 搜索插入位置(35)(二分查找)

搜索插入位置 二分查找

搜索插入位置(二分查找)

二分查找(通过相对位置判断区间位置)--17--二分--LeetCode33搜索旋转排序数组