int maxValue = m[0][0];
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if ( m[i][j] >maxValue )
{
maxValue = m[i][j];
}
}
}
cout<<maxValue<<endl;
int sum = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
sum = sum + m[i][j];
}
}
cout<< sum <<endl;
对于上面提到的代码,我得到了 O(n2) 作为执行时间增长他们得到它的方式是:
最大 [O(1) , O(n2), O(1) , O(1) , O(n2), O(1)]
两个 O(n2) 都是 for 循环。这个计算正确吗?
如果我将此代码更改为:
int maxValue = m[0][0];
int sum = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
if ( m[i][j] > maxValue )
{
maxValue = m[i][j];
}
sum += m[i][j];
}
}
cout<<maxValue<<endl;
cout<< sum <<endl;
大 O 仍然是 O(n2) 对吗?那么这是否意味着 Big O 只是一个关于时间将如何根据输入数据大小增长的指示?而不是算法怎么写?