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)を取得しました。取得した方法は次のとおりです。
MAX [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は、入力データのサイズに応じて時間がどのように増加するかを示しているにすぎませんか?アルゴリズムの書き方ではありませんか?