• 大O表示法



    定义

    大O表示法是一种特殊的表示法,指出了算法的速度有多快。

    • 并不以秒为单位,而是指算法运行时间随操作数的增速(随着输入的增加,其运行时间将以什么样的速度增加)。
    • 指出了最糟情况下的运行时间。
    • O(log n)比O(n)快,当需要搜索的元素越多时,前者比后者快得越多。
    • O(n × 1/2 × n)。 但大O表示法省略诸如1/2这样的常数(有关这方面的完整讨论,请参阅《算法图解》第4章),因此简单地写 作O(n × n)或O(n^2 )。

    常见的大 O 运行时间

    下面按从快到慢的顺序列出了你经常会遇到的5种大O运行时间。

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

    对数补充

    对数运算是幂运算的逆运算

    log_10 100相当于问“将多少个10相乘 的结果为100”。

    答案是两个:10 × 10 = 100。因此,log_10 100 = 2

    示例

    使用大O表示法(稍后介绍)讨论运行时间时,log指的都是log2

    而使用二分查找时,最多需要检查log n个元素。

    如果列表包含8个元素,你最多需要 检查3个元素,因为log 8 = 3(2^3 = 8)。

    如果列表包含1024个元素,你最多需要检查10个元素, 因为log 1024 = 10(2^10 =1024)。

  • 相关阅读:
    [哈希][倍增] Jzoj P5856 01串
    [exgcd] Jzoj P5855 吃蛋糕
    [折半搜索][分治][二分] Jzoj P5851 f
    [lca][主席树] Jzoj P5850 e
    [二分][树状数组] Jzoj P5849 d
    [容斥] Jzoj P5843 b
    [前缀和][枚举] Jzoj P5842 a
    [平衡规划][模拟][前缀和] Jzoj P4724 斐波那契
    [spfa] Jzoj P4722 跳楼机
    [模拟] Jzoj P2499 东风谷早苗
  • 原文地址:https://www.cnblogs.com/huangtq/p/15427875.html
Copyright © 2020-2023  润新知