二分查找和大O表示法

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

内容简介:那么得出结论,对于 n 个元素,用二分查找最多需要 log2(n) 步,简单查找最多需要 n 步2^log2 (n)=n,log 叫对数运算,2^n 叫幂运算,他们互为逆运算注意二分查找法必须是有序的,简单来说就是分一半
  • 如果从中间值开始猜
  • 那么临界点就是 99,最坏的情况下只用猜七次,50 错,75 错..这样猜

那么得出结论,对于 n 个元素,用二分查找最多需要 log2(n) 步,简单查找最多需要 n 步

2^log2 (n)=n,log 叫对数运算,2^n 叫幂运算,他们互为逆运算

算法实现

注意二分查找法必须是有序的,简单来说就是分一半

大 O 表示法

指出的是最糟情况下的运行时间,也可以说是操作数

  • 这里用大 O 表示法讨论运行时间,都是讨论的最糟糕的临界值,比如简单查找 100 个元素,就是要看每一个元素。二分查找也是查看最远的,那么就只用查看 log100 个元素约为 7
  • log 时间这里的底数默认是 2,也就是默认是 log2
  • 其实我们是用幂运算的眼光来看,我们求的运行时其实就是指数

概念

  • 大 O 表示法指出了算法有多快。例如,假设列表包含 n 个元素,简单查找需要检查每个元素,因此需要执行 n 次查找,运行时间位 O(n)
  • O(n),单位不是秒,大 O 表示法指的并不是以秒为单位的速度,而是能够比较操作数,它指出了算法运行时间的增速
  • 所以 n 是操作数的意思
  • 谈论算法的速度,是随着输入的增加,其运行事件将以怎么样的速度增加

常见的大 O 运行时间

由快到慢的经常遇到的五种,可以自己想象一下坐标系图

  • O(log n),也叫对数时间,这样的算法包括二分查找
  • O(n),线性时间,包括简单查找
  • O(n*log n),包括快速排序(业界俗称快排),一种速度较快的快速排序
  • O(n^ 2),包括选择排序,一种速度较慢的 排序 算法
  • O(n!),包括旅行商问题的解决方案,一种非常慢的算法

旅行商问题

旅行商要前往 5 个城市,同时确保旅程最短,这样它要每个城市都去,然后计算总旅程,再挑选路线最短的

  • 5 个城市有 120 种不同的排列方式,因此需要 120 次操作
  • 这是一个非常非常慢的算法,但是这个问题也是计算机科学领域待解决的问题

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

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

编程的修炼(中英双语)

编程的修炼(中英双语)

[荷]Edsger W. Dijkstra / 裘宗燕 / 电子工业出版社 / 2013-7 / 79.00元

本书是图灵奖获得者Edsger W. Dijkstra在编程领域里的经典著作中的经典。作者基于其敏锐的洞察力和长期的实际编程经验,对基本顺序程序的描述和开发中的许多关键问题做了独到的总结和开发。书中讨论了顺序程序的本质特征、程序描述和对程序行为(正确性)的推理,并通过一系列从简单到复杂的程序的思考和开发范例,阐释了基于严格的逻辑推理开发正确可靠程序的过程。 本书写于20世纪70年代中后期,但......一起来看看 《编程的修炼(中英双语)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

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

在线XML、JSON转换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具