我正在阅读“算法简介”一书,但不明白这一点。 O(100),O(log(n)),O(n * log(n)),O(n2),O(n3)
好的,谢谢,我甚至不知道它是什么,所以我现在要读Big O的帖子。 但是,如果有人能够以外行的方式进一步解释这一点,那将非常感激。
由于
答案 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
是所提供输入的大小。