次の C 関数の時間計算量を計算したところ、次のようになりました。theta (nlogn)
私が間違っているかどうか教えていただけますか?与えられた答えはtheta(n^2logn)
?私はこれらの概念について読み始めたところです。
int unk(int n)
{
int i,j,k=0;
for(i=n/2;i<=n;i++)
for(j=2;j<=n;j=j*2)
k=k+(n/2);
return k;
}
私がやったことは次のとおりです:外側のループは(n/2+2)
回実行され、内側のループは(n/2+1)(logn+1)
回実行され、ループの本体のステートメントは回実行されます.(n/2+1)(logn)
したがって、合計実行時間は になりtheta(nlogn)
ます.(すべてのコストが1であり、ログが2 対数である必要があります)。