zoukankan      html  css  js  c++  java
  • 大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表示法表示。

  • 相关阅读:
    生成指定规模大小的redis cluster对关系
    根据ip列表模拟输出redis cluster的主从对应关系
    获取redis实例绑定cpu的情况
    通过shell模拟redis-trib.rb info的输出
    又一种获取redis cluster slots分布的小脚本
    第3种方法获取redis cluster主从关系
    Lamada
    Linq笔记
    推荐博文
    SQL server 自带存储过程 sp_rename
  • 原文地址:https://www.cnblogs.com/pickKnow/p/10947798.html
Copyright © 2011-2022 走看看