通过分析程序的运行时间,我有一个矛盾。例如,考虑以下代码:
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
.....
}
}
这里,第一个 for 循环的计算复杂度为 O(n 2 ),第二个循环的计算复杂度为 O(n)。但是,第二个循环执行 n 2次,而第一个循环执行 n 次。例如,如果我们在内循环中放置一个 cout 语句,它会输出 n 2次,但是如果我们将 cout 放在第一个循环内但在内循环之外的某个位置,它会输出 n 次。那么为什么我们说内循环的复杂度是O(n),而外循环的复杂度是O(n 2 )。我们说外循环的复杂度是 O(n 2 ) 但它执行了 n 次,为什么会这样呢?难道我做错了什么?谢谢。