• 大O 表示法


    大O表示法

    指出了算法有多快。例如,假设列表包含n个元素。简
    单查找需要检查每个元素,因此需要执行n次操作。使用大O表示法,
    这个运行时间为O(n)。单位秒呢?没有——大O表示法指的并非以秒为单位的速度。大O表示法
    让你能够比较操作数,它指出了算法运行时间的增速。

    大O 表示法指出了最糟情况下的运行时间
    假设你使用简单查找在电话簿中找人。你知道,简单查找的运行时间为O(n),这意味着在最
    糟情况下,必须查看电话簿中的每个条目。如果要查找的是Adit——电话簿中的第一个人,一次
    就能找到,无需查看每个条目。考虑到一次就找到了Adit,请问这种算法的运行时间是O(n)还是
    O(1)呢?
    简单查找的运行时间总是为O(n)。查找Adit时,一次就找到了,这是最佳的情形,但大O表
    示法说的是最糟的情形。因此,你可以说,在最糟情况下,必须查看电话簿中的每个条目,对应
    的运行时间为O(n)。这是一个保证——你知道简单查找的运行时间不可能超过O(n)。

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

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

    小结

     二分查找的速度比简单查找快得多。

     O(log n)比O(n)快。需要搜索的元素越多,前者比后者就快得越多。
     算法运行时间并不以秒为单位。
     算法运行时间是从其增速的角度度量的。
     算法运行时间用大O表示法表示。

  • 相关阅读:
    POJ 1811 Prime Test(Miller-Rabin & Pollard-rho素数测试)
    HDU 3037 Saving Beans(Lucas定理模板题)
    HDU 5029 Relief grain(离线+线段树+启发式合并)(2014 ACM/ICPC Asia Regional Guangzhou Online)
    Java进阶(二)当我们说线程安全时,到底在说什么
    UML建模一般流程
    Spring事务管理(详解+实例)
    Spring 的 BeanPostProcessor接口实现
    Spring中ApplicationContext和beanfactory区别
    使用Maven Release插件发布项目
    tair与redis比较总结
  • 原文地址:https://www.cnblogs.com/pickKnow/p/10947798.html
Copyright © 2020-2023  润新知