下面是代码:这种最坏情况分析是否正确?
int Outcome = 0;
for (int i = 0; i < N; i++)
for (int j = i+2; j = 0; j--)
Outcome += i*j;
这里是我的分析。由于第一行是赋值语句,因此这需要一个时间单位O(1)。第2行的分解为:1 + N + N = 2N + 2.由于循环的内容是单个操作,所以第3行 循环及其块执行i + 1操作。这也是一个嵌套的for循环。最后,第4行需要执行一个时间单位。因此,用N代表的这个代码的大哦表示是O(N )。
听起来对我来说是正确的。做得好! –
'x^2'是二次方程,它是在阶数'2'的'x'上的多项式。你可以说你的复杂性是'O(i * j)'和'j = O(i)',因此你有'O(n^2)'......每当你有一个嵌套循环时,它通常是'O n^2)':) – Bill
请参阅CS上的[此依赖嵌套循环复杂性](http://cs.stackexchange.com/questions/4590/big-o-nested-for-loop-with-dependence)问题。 – user2246674