美文网首页
大O表示法

大O表示法

作者: 四月不见 | 来源:发表于2021-12-26 22:28 被阅读0次

    一、简介

    表示时间的大O符号,是用来描述算法效率的语言和度量单位。
    大O表示法分析了算法的运行时间如何随列表的增长而增长,指出了算法最糟情况下的运行时间。

    二、大O表示法

    算法图解

    n为列表的长度,(n)作为大O表示法的操作数。

    注:
    1、算法的运算速度指的并非时间,而是操作数的增速。
    2、谈论算法的速度时,我们说的是随着输入的增加,其运行时间将以什么样的速度增加。

    三、常见的大O运算时间

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

    四、关于常量

    大O表示法通常不考虑常量,因为如果这两种算法的大O运行时间不同,这个常量将无关要紧。
    大O表示法不考虑乘以、除以、加上或减去的数字。如O(n+26)、O(n-26)、O(n*26)、O(n/26),它们都应该表示为O(n)。

    如下图:

    其中Ο(log2n )、Ο(n)、 Ο(nlog2n )、Ο(n2)和Ο(n3)称为多项式时间,而Ο( 2n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者(即多项式时间复杂度的算法)是有效算法,把这类问题称为P(Polynomial,多项式)类问题,而把后者(即指数时间复杂度的算法)称为NP(Non-Deterministic Polynomial,非确定多项式)问题。

    参考

    1、《算法图解》https://www.manning.com/books/grokking-algorithms
    2、《算法的基本概念》https://www.zybuluo.com/defias/note/286416

    相关文章

      网友评论

          本文标题:大O表示法

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