多线性操作会影响整体功能更糟糕的案例复杂性?

时间:2016-10-17 10:40:08

标签: c++ loops time-complexity

这可能是一个简单的问题,但无论如何我都会问:

我已写下以下功能:

std::vector<int> V={1,2,3,4,5};
int myFunction()
{
   for(int i=V.size();i--;){//Do Stuff};
   for int e=V.size();i--;){//Do Stuff};
}

这需要时间复杂度更糟的情况O(n)空间复杂度更糟的情况O(1)

是否有两个线性运算(for-loops)会将时间复杂度更改为O(n)以外的其他值?

1 个答案:

答案 0 :(得分:4)

没有。它不是。 O(N)表示aN+b + something weaker than linear N

甚至类似:T(N)= 5N+100 + Log(N)也被视为O(N)

比线性N&#34;弱的东西,我的意思是满足等式的任何函数R(N):

lim R(N)/N = 0 ; N-->Inifinity   //Use L'Hospital's Rule for solving these kind of limits

所以O(N)可以写成:

O(N) = aN+b + R(N)

旁注:复杂性不等于效果。虽然(N+N)仍为O(N),但这并不意味着它不会慢于(N)。性能,最基本的形式,是关于你需要做的事情的数字周期,而不是理论上的复杂性。

然而,至少当N变为非常大的数字(几乎是无限)时,它应该是相关的。

相关问题