Big o 一个O(n)的算法怎么可能也是O(n^2),O(n^1000000),O(2^n)?

Big o 一个O(n)的算法怎么可能也是O(n^2),O(n^1000000),O(2^n)?,big-o,asymptotic-complexity,Big O,Asymptotic Complexity,那么这个问题的答案是什么呢 声明“基本上,当我们说一个算法是O(n)的时候,它也是O(n2),O(n1000000),O(2n),…但是一个Θ(n)算法不是Θ(n2)。” 我理解大O代表上界或最坏情况,但我不理解O(n)如何也是O(n2)以及其他比O(n)更坏的情况 也许我有一些基本的误解。请帮助我理解这一点,因为我已经挣扎了一段时间 谢谢 我理解大O代表上界或最坏情况,但我不理解O(n)如何也是O(n2)以及其他比O(n)更坏的情况 直观地说,“x的上界”意味着某个值总是小于或等于x。如果某个

那么这个问题的答案是什么呢

声明“基本上,当我们说一个算法是O(n)的时候,它也是O(n2),O(n1000000),O(2n),…但是一个Θ(n)算法不是Θ(n2)。”

我理解大O代表上界或最坏情况,但我不理解O(n)如何也是O(n2)以及其他比O(n)更坏的情况

也许我有一些基本的误解。请帮助我理解这一点,因为我已经挣扎了一段时间

谢谢

我理解大O代表上界或最坏情况,但我不理解O(n)如何也是O(n2)以及其他比O(n)更坏的情况

直观地说,“x的上界”意味着某个值总是小于或等于x。如果某个值小于或等于
x
,则它也小于或等于
x^2
x^1000
,以获得足够大的
x
。因此
x^2
x^1000
也可以是上界


这就是大oh所代表的:上界。

思考大oh的含义是很有帮助的:如果函数是O(n),那么
c*n
,其中c是一些正数,是上界。如果
c*n
是上界,那么对于整数,
c*n^2
显然也是上界。还有
c*n^3
c*n^4
c*n^1000
,等等

下图显示了函数的增长,它是函数“向右”的上界;i、 例如,它在较小的
n
上生长得更快


当我们说f(n)=O(g(n))时,我们的意思是,对于所有足够大的n,存在一个常数c,使得f(n)假设算法的运行时间是
T(n)=3n+6
(即,一阶任意多项式)

这是真的,
T(n)=O(n)
,因为
3n+6<4n
对于所有
n>5
(使用大oh符号的定义)。
T(n)=O(n^2)
也是正确的,因为
3n+6
对于所有
n>5
(再次使用该定义)


T(n)=Θ(n)
也是正确的,因为除了证明它是
O(n)
之外,
3n+6>n
对于所有
n>1
都是正确的。但是,对于任意大的
n
,对于
c
的任何值,您无法证明
3n+6>cn^2
。(证明草图:lim(cn^2-3n-6)>0表示n->无穷大)。

如果一个数字是
<1
,那么它也是
<10
<1000
,但是如果它是
==1
,那么它也不是
==10
==1000
。上限不必很紧。与0.99<1但也0.99<10000000000的方式相同,可以说n=O(n),但也可以说n=O(n³)。BigO是一个上限。BigΘ更像是一个等式。Big Oh符号是一个大概的符号。如果一个算法“在n的范围内”,那么它就是大的Oh(n)。n^2是一个更大的球场,等等。如果某件事可以在不超过
n
的时间内完成,那么它也可以在
n^2
的时间内完成,因为
n
。这就是为什么O(n)算法在技术上也是O(n^2),它的意思是“不超过”。