二分查找和大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 次操作
  • 这是一个非常非常慢的算法,但是这个问题也是计算机科学领域待解决的问题

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

查看所有标签

猜你喜欢:

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

Visual LISP程序设计

Visual LISP程序设计

李学志 / 清华大学 / 2006-5 / 29.00元

本书系统地介绍了AutoCAD最新版本(2006)的Visual LISP程序设计技术。全书共分13章。前3章介绍AutoLISP语言的基础知识,第4章介绍Visual LISP的开发环境,第5~7章介绍程序的编辑、调试和设计的方法与技巧,第8章介绍如何定义新的AutoCAD命令及创建图层、线型、文字样式、剖面线、尺寸标注等各种AutoCAD对象,以及如何实现参数化图形设计的方法和技术,第9章介绍......一起来看看 《Visual LISP程序设计》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

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

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具