大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)。

原文地址:https://www.cnblogs.com/huangtq/p/15427875.html