复杂程度递增的列表?

时间:2011-11-10 09:34:15

标签: algorithm

  

可能重复:
  Plain English explanation of Big O

我正在阅读“算法简介”一书,但不明白这一点。 O(100),O(log(n)),O(n * log(n)),O(n2),O(n3)

好的,谢谢,我甚至不知道它是什么,所以我现在要读Big O的帖子。 但是,如果有人能够以外行的方式进一步解释这一点,那将非常感激。

由于

2 个答案:

答案 0 :(得分:0)

Big O(简化)表示给定算法需要多长时间,n为条目数。

例如:

O(100) - >无论进入多少,都需要100个单位才能完成。

O(log(n)) - >将log(n)完成

O(n2) - >将需要n ^ 2(n * n)来完成

答案 1 :(得分:0)

这是大O符号和算法效率的顺序:

  • O(1),而非O(100) - 常数时间 - 无论输入如何,算法都会在恒定时间内执行

  • O(log(n)) - 对数时间 - 随着输入变大,时间也会变大,但数量会减少

  • O(n*log(n)) - 线性*对数 - 增加大于线性,但不如以下

  • O(n^2),或者通常是O(n^k),其中k是常数 - 多项式时间,可能是最差的可行算法

有更糟糕的算法,对于非小型输入而言被认为是不可行的:

  • O(k^n) - 指数

  • O(n!) - factorial

  • 遵循Ackerman函数的算法......

这种符号是定向的。例如,O(n^2)中的某些算法平均可以比O(n*log(n))更快地执行 - 请参阅快速排序。

这种表示法也是一个上限,意味着它描述了最坏的情况。

它可用于空间复杂性或时间复杂度,其中n是所提供输入的大小。