算法图解之大O表示法

什么是大O表示法

大O表示法可以告诉我们算法的快慢。

大O比较的是操作数,它指出了算法运行时间的增速。

O(n) 括号里的是操作数。

举例

画一个16个格子的网格,下面分别列举几种不同的画法,并用大O表示法表示

1.  一次画一个格子。O(n)

2. 折叠纸张,折叠四次就能出现16个格子。O(log n)

大O表示法所表示的是一个算法在最糟糕情况下的运行时间。

一些常见的大O运行时间

  • O(log n),也叫对数时间,二分查找。
  • O(n),也叫线性时间,简单查找。
  • O(n * log n),快速排序——一种速度较快的排序算法。
  • O(n²),选择排序——一种速度较慢的排序算法。
  • O(n!),旅行商问题的解决方案——一种非常慢的算法。

主要启示

  • 算法的速度指的是操作数的增速,而非时间。
  • 谈论算法速度说的是随着输入的增加,其运行时间将以什么样的速度增加。
  • 用大O表示法表示算法的运行时间。
  • 随着元素的增加,快算法比慢算法增加的速度是指数级的。比如,O(log n)和O(n)

旅行商问题

旅行商问题用大O表示法就是O(n!),没错,就是有这么慢的算法。这个问题是说的一个销售员,要去5个城市,他想规划一下最短距离,然后选出最短的距离。5个城市一共有120种规划方案(5!)。n个城市就有n!种规划方案。旅行商问题在计算机科学领域是无解的。

原文地址:https://www.cnblogs.com/lshedward/p/10428455.html

时间: 2024-07-31 23:30:14

算法图解之大O表示法的相关文章

【从0到1学算法】大O表示法

一般我们在选择算法时,都是想要选择效率最高的算法.那算法的效率,用什么表示?没错!就是用大O表示法. PS: 大O表示法中,log即为log2,后面不再说明. 下面以简单查找和二分查找,在含有n个元素的有序列表中查找其中一个元素为例,下表总结了我们发现的情况. 使用简单查找时,最多需要猜测次数与列表长度相同,这被称为线性时间,大O表示法为O(n). 二分查找则不同,最多需要猜测次数为logn(n为列表长度),这被称为对数时间(log时间),大O表示法为O(logn). 基本概念 大O表示法指出了

2、数据结构与算法之大O表示法

一.大O表示法 大O表示法不是一种算法.它是用来表示一个算法解决问题的速度的快慢.一般我们描述一件事情完成的快慢是用时间描述的,比如说我完成一道计算题用了多少分钟.但算法的运算是很难用准确的时间来描述的,所以我们就用算法解决问题一共用了多少步来表示算法的快慢. 用第一篇的两种查找方法来举例,简单查找我们要用列表中的每一个元素逐一去比较,如果有n个元素,那么简单查找最多需要n步找到数据(数据在列表末尾).而二分查找一次只用中位数去作比较,当查找有n个元素的数组时,最多需要log2n次. 用大O表示

图解十大经典机器学习算法

图解十大经典机器学习算法 弱人工智能近几年取得了重大突破,悄然间,已经成为每个人生活中必不可少的一部分.以我们的智能手机为例,看看到底温藏着多少人工智能的神奇魔术. 下图是一部典型的智能手机上安装的一些常见应用程序,可能很多人都猜不到,人工智能技术已经是手机上很多应用程序的核心驱动力. 图1 智能手机上的相关应用 传统的机器学习算法包括决策树.聚类.贝叶斯分类.支持向量机.EM.Adaboost等等.这篇文章将对常用算法做常识性的介绍,没有代码,也没有复杂的理论推导,就是图解一下,知道这些算法是

《算法图解》+ 《我的第一本算法书》+资料PDF学习

<我的第一本算法书>没有枯燥的理论和复杂的公式,而是通过大量的步骤图帮助读者加深对数据结构 原理和算法执行过程的理解,便于学习和记忆. 下载:https://pan.baidu.com/s/1poq0e2siuvR1Re5pEIkBnQ <我的第一本算法书>高清PDF,210页,彩色配图,带书签目录,文字可以复制. <我的第一本算法书>采用大量图片,通过详细的分步讲解,以直观.易懂的方式展现了7个数据结构和 26个基础算法的基本原理.第1章介绍了链表.数组.栈等7个数据

算法入门《数据结构与算法图解》+《我的第一本算法书》+《学习JavaScript数据结构与算法第3版》

最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高. <数据结构与算法图解>电子书及代码是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑.主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈.队列等的合理使用,等等. <算法图解>电子书非常的体贴,看起来也很快,用图来解释算法是非常好的想法,可作为学习数据结构

基于四元数的姿态解算算法图解

下面的两个地址是我存放在百度云网盘的附件,分别是基于四元数的互补滤波法的图解和梯度下降法的图解.笔者采用MindManager思维导图软件对上述两种算法进行详细的解释,非常形象. 希望这种方式能够让大家快速.准确的理解这两种算法的流程. 互补滤波法: http://pan.baidu.com/s/1c0b8qJ2 梯度下降法: http://pan.baidu.com/s/1sjI1l5F

2.算法中的大O符号

大O符号是一种算法复杂度的相对表示方式. 1.大O表示算法的操作数,表示出算法运行的快慢 2.大O表示法指出了最糟糕情况下的运行时间,例如 简单查找的运行时间O(n),意味着在最糟糕的情况下,必须运行n次才能找到结果.O(n)就是算法的一个保证-----运行时间不可能超过O(n) 3.常见的一些大O运行时间 O(logn) 对数时间.这杨的算法包括二分查找 O(n) 线性时间,这样的算法包括简单查找 O(n*logn) 这样的算法包括快速排序 O(n2) 这样的算法包括 选择排序--一种较慢的排

【算法】普通方法和筛选法求素数

素数指的是因子只有1和本身的数(1不是素数),求解素数在数学上应用非常广泛,而求解n以内的素数也是我们编程时常遇到的问题,在这个问题上,筛选法求解素数运行得非常快.下面首先介绍如何判断一个是不是素数,然后介绍用普通方法求n以内的素数,接着是筛选法求n以内的素数,最后是两种算法的运行时间比较 判断一个数是不是素数 算法思想:判断小于等于一个数的平方的所有大于1的整数是不是能整除这个数,如果能,则表明这个数不是素数:反之,则是素数. //判断一个数是否为素数 bool isPlain(int val

《算法图解》[美] Aditya Bhargava(作者)epub+mobi

内容简介 本书示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量.书中的前三章将帮助你打下基础,带你学习二分查找.大O表示法.两种基本的数据结构以及递归等.余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划:散列表的应用:图算法:K最近邻算法. 下载地址: http://pan.baidu.com/s/1kVLw1jp   密码:nsab