数据结构与算法:二分查找

栏目: 编程工具 · 发布时间: 5年前

内容简介:二分查找是搜索算法中的一种,用来搜索二分查找:是一种简单算法,其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要

数据结构与算法:二分查找

二分查找是搜索算法中的一种,用来搜索 有序数组

二分查找:是一种简单算法,其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要

查找的元素包含在列表中,二分查找返回其位置;否则返回 null

Javascript ES6实现

/** 
 * 函数binarySearch接受一个有序数组和一个元素。 如果指定的元素包含在数组中, 这个
 函数将返回其位置。 你将跟踪要在其中查找的数组部分—— 开始时为整个数组。
*/
const binarySearch = (list, item) => {
  // 数组要查找的范围
  // low、high用于跟踪要在其中查找的列表部分
  let low = 0  
  let high = list.length - 1

  while(low <= high) { // 只要范围没有缩小到只包含一个元素
    const mid = Math.floor((low + high) / 2)
    const guess = list[mid] // 找到中间的元素

    if(guess === item) { // 找到元素
      return mid
    }
    if(guess > item) { // 猜测的数大了
      high = mid - 1
    } else { // 猜测的数小了
      low = mid + 1
    }
  }

  return null
}

const myList = [1, 3, 5, 7, 9]

console.log(binarySearch(myList, 3))
console.log(binarySearch(myList, -1))

运行时间:

数据结构与算法:二分查找

二分查找的运行时间为对数时间(或log时间)。

如果列表包含100个元素,最多要猜7次;如果列表包含40亿个数字,最多

需猜32次。

数据结构与算法:二分查找

即:2的7次方 = 100

数据结构与算法:二分查找

简单查找时间是y= ax 的线性方方程

所以很容易得出结论

随着元素数量的增加(x增加),二分查找需要的时间(y)并不多, 而简单查找需要的时间(y)却很多。

为检查长度为n的列表,二分查找需要执行log n次操作。使用大O表示法,

这个运行时间怎么表示呢?O(log n)。一般而言,简单算法的大O表示法像下面这样

数据结构与算法:二分查找

大O符号

大O符号中指定的算法的增长顺序

数据结构与算法:二分查找

以下是一些最常用的 大O标记法 列表以及它们与不同大小输入数据的性能比较。

数据结构与算法:二分查找

  • O(log n),也叫对数时间,这样的算法包括二分查找
  • O(n),也叫线性时间,这样的算法包括简单查找。
  • O(n * log n),这样的算法包括 快速排序 ——一种速度较快的 排序 算法。
  • 数据结构与算法:二分查找 ,这样的算法包括 选择排序 ——一种速度较慢的排序算法
  • O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法

数据结构与算法:二分查找

小结

  • 算法的速度指的并非时间,而是操作数的增速。
  • 谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。
  • 算法的运行时间用大O表示法表示。
  • O(log n)比O(n)快,当需要搜索的元素越多时,前者比后者快得越多

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

机器消灭秘密

机器消灭秘密

安迪•格林伯格 (Andy Greenberg) / 王崧、王涛、唐禾 / 重庆出版社 / 2017-8-10 / 49.8

《机器消灭秘密》一书中,格林伯格深入研究并生动再现了那些拥有全能技术的网络安全魔术师,他们将任何企图染指个人隐私的所谓国家机密的保密性打得粉碎。这本精心组织的著作是对此题材感兴趣的读者的必读之书,即便现在你可能不感兴趣,将来也极有可能希望了解这些内容,因为任何人都会不可避免地置身其中。无论你是初涉电脑屏幕之后的虚拟战场的新生,还是经验丰富的维基解密观察家,本书都是不可多得的上乘之作,你总会在其中发......一起来看看 《机器消灭秘密》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具