for (i = 0; i < 2*n; i += 2)
{
for (j=n; j > i; j--)
//some code that yields O(1)
}
我认为上面会产生n*log(n)
但是我看到另一个消息来源说它确实是n^2
复杂的大哦。
请向我解释它是什么以及我将来如何解决这类问题。
答案 0 :(得分:5)
你有一个依赖于n
的循环,并且在该循环内你还有另一个循环,它依赖于n
,因此得到的O是O(n*n)
,即O(n^2)
。
Big O仅在算法的增长率上提供上限。因此,所有常数因子都被丢弃了。
答案 1 :(得分:1)
由于大O用于上限,因此N * N将始终<= N ^ 2,导致O(N * 2)。答案是对的