我在确定算法的时间复杂度时遇到问题。
for(int i=0;i <n i++){} O(n)
for(int i= 0 ;i<n ;i++){ O(n^2)
for(int j=0;j<n;j++){
}
}
现在对于以下代码的复杂性是多少
for(i =0; i<n ; i++) {}
for (j=0;j<n ;j++ ) {}
它涉及 2 个独立的循环,所以它是 O(2n) 吗?
如果我开始 j =5 到 n 会怎样?
没有O(2n)
, 只是O(n)
。换句话说,它的扩展速度与n
增加。
If it was a nested loop, it would be O(n2)
but the presence of your {}
empty blocks means it isn't nested.
无论你从 1 开始还是从 5 开始都没有什么区别,它仍然可以随着n
,只是加上一个稍微负的常数。因此仍然O(n)
.
复杂性O(n)
, O(cn)
and O(n+c)
(where c
是常数)都是等价的。此外,您通常也只使用效果最高的术语。
So you won't usually see O(7n3 + 3n2 + 12n + 2)
, that will be simplified to O(n3)
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)