大 O 与函数增长速度之间的区别
Difference between Big O and How fast a Function grows
我似乎混淆了两个概念,渐近复杂度(函数增长的速度)和大 O(算法的时间复杂度)。它们是一样的吗?
例如,我知道 O(1)
是算法的最佳情况 运行 时间。但很明显,这比 O(n^n)
之类的增长速度慢得多,后者增长得非常快,但这不是一种有利的算法复杂性吗?
还有类似的东西:
nlogn
比 1
或 logn
增长得更快,但所有这些功能都比 n^n
增长得慢?任何澄清将不胜感激。
Big O是一种衡量算法渐近复杂度的方法,可以是时间,也可以是space。来自维基百科 link:
A description of a function in terms of big O notation usually only
provides an upper bound on the growth rate of the function.
...
Big O notation is also used in many other fields to provide similar estimates.
n
的大小有一些要说的,因为 O(1) 是最好的复杂度,尽管这表明对于足够大的 n
,常数项并不重要。
https://classes.soe.ucsc.edu/cmps102/Spring04/TantaloAsymp.pdf 可能有助于查看可以使用的不同符号。
我似乎混淆了两个概念,渐近复杂度(函数增长的速度)和大 O(算法的时间复杂度)。它们是一样的吗?
例如,我知道 O(1)
是算法的最佳情况 运行 时间。但很明显,这比 O(n^n)
之类的增长速度慢得多,后者增长得非常快,但这不是一种有利的算法复杂性吗?
还有类似的东西:
nlogn
比 1
或 logn
增长得更快,但所有这些功能都比 n^n
增长得慢?任何澄清将不胜感激。
Big O是一种衡量算法渐近复杂度的方法,可以是时间,也可以是space。来自维基百科 link:
A description of a function in terms of big O notation usually only provides an upper bound on the growth rate of the function.
...
Big O notation is also used in many other fields to provide similar estimates.
n
的大小有一些要说的,因为 O(1) 是最好的复杂度,尽管这表明对于足够大的 n
,常数项并不重要。
https://classes.soe.ucsc.edu/cmps102/Spring04/TantaloAsymp.pdf 可能有助于查看可以使用的不同符号。