如果T(n)是O(n),那么说T(n)是O(n2)是正确的吗?
答案 0 :(得分:8)
是;因为O(n)是O(n ^ 2)的子集。
答案 1 :(得分:3)
假设
T(n)= O(n),n> 0
然后以下两个都是真的
T(n)= O(2n)
T(n)= O(n 2 )
这是因为2n
和n
2
的增长速度与普通n
一样快或更快。编辑:正如菲利普在评论中正确指出的那样,即使小于1的值也可以是n
的乘数,因为常数项可能会被删除(对于n
的大值,它们变得微不足道;编辑2:正如奥利所说,根据O
的定义,所有常数都是微不足道的。因此以下是也是 true:
T(n)= O(0.2n)
事实上,n 2 增长如此之快,你也可以说
T(n)= o(n 2 )
但不是
T(n)=Θ(n 2 )
因为给定的函数提供渐近上界,而不是渐近紧束缚。
答案 2 :(得分:2)
如果你的意思是O(2 * N),那么是O(n)== O(2n)。所用时间是两种情况下输入数据的线性函数
我不同意另一个答案,即O(N)= O(N * N)。确实,O(N)函数将在比O(N * N)更短的时间内完成,但完成时间不是n * n的函数,所以它确实不是真的
我想答案取决于你提出问题的原因
答案 3 :(得分:0)
O也称为Big-Oh是上限。我们可以说存在C,使得对于所有n> N,T(n)< C g(n)。其中C是常数。
因此,除非T(n)中的大系数小于或等于g(n),否则该语句始终有效。