美文网首页
算法-二分查找法

算法-二分查找法

作者: 0月 | 来源:发表于2019-02-13 23:20 被阅读0次

二分查找法的原理:

让最大数与最小数的中间数不断与目标数字比较,然后不断缩小最大值和最小值的范围,直到范围缩小到1个数字为止。
代码:

// 输入一个数组,和一个目标查找数字,返回目标数字在这个数组中的位置
function binarySearch(arr, target){
  let low = 0;
  let high = arr.length - 1
  if (arr[low] > target || arr[high] < target){
    return - 1
  }

  while(low <= high) {
    let middle = parseInt(low + high) / 2
    if(arr[middle] === target) {
      return middle
    } else if (arr[middle] > target) {
      high = middle - 1
    } else if (arr[middle] < target) {
      low = middle + 1
    }
  }
}

var arr = [1,2,3,4,5,6]
var target = 2
binarySearch(arr, target) // 返回1

var arr = [1,2,3,4,5,6]
var target = 20
binarySearch(arr, target) // 返回-1

var arr = [1,2,3,4,5,6]
var target = 0
binarySearch(arr, target) // 返回-1

写代码验证一下:


image.png

用法:

在小数组里面看不出来效果,如果在一个大数组中,这种方法的效率查找是很快的。普通循环的时间复杂度是O(n),而二分查找法的时间复杂度:

比如:总共有n个元素,每次查找的区间大小就是n,n/2,n/4,…,n/2^k(接下来操作元素的剩余个数),其中k就是循环的次数。
由于n/2^k取整后>=1,即令n/2^k=1,
可得k=log2n,(是以2为底,n的对数),所以时间复杂度可以表示O()=O(logn)

该算法可以直接用在生产环境中。

相关文章

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 16 基本查找算法:二分查找算法

    二分查找算法 原理 二分查找算法也叫折半法查找法,要求待查找的列表必须是按关键字大小有序排列的顺序表。查找过程如下...

  • python二分查找算法

    文章概述 二分查找法介绍 简单查找与二分查找对比 二分查找  二分查找算法主要思想:在有序列表中查找指定元素,先从...

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 数据结构与算法——基础篇(六)

    常用10种算法 1、二分查找算法(非递归)——要求有序 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等...

  • 二分查找法

    二分查找法 二分查找法(递归)

  • 解析前端面试之二分查找算法

    二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法。 二分法查找的思路如下: (1)首先,从数组的...

网友评论

      本文标题:算法-二分查找法

      本文链接:https://www.haomeiwen.com/subject/hgpjeqtx.html