0
for (int i = 0; i < n; i++ ) {
    for (int j = 0; j < n; j++ {
        Simple Statement
    }
}
for (int k = 0; i < n; k++ {
    Simple Statement
    Simple Statement
    Simple Statement
    Simple Statement
    Simple Statement
}
    Simple Statement*25

ネストされたループの場合、1 (int i = 0 の場合) + n + 1 (i < n の場合) + n (i++ の場合) * [ 1 (int j = 0 の場合) + 1 + n ( for j < n) + n ( for j++) ] + n (単純なステートメントの場合)。これは (1+n+1+n) (1+1+n+n)+n = (2 + 2n) (2+2n)+n = 4n^2 + 9n + 4 です。

次のループでは、1 (int k = 0 の場合) + n + 1 (i < n の場合) + n (k++ の場合) + 5n (5 つの単純なステートメントの場合) の時間計算量が見つかります。これは 1+n+1+n+5n = 7n+2 です。次の 25 個の単純なステートメントについては、時間の複雑度が 25 であることがわかりました。

したがって、時間計算量の合計は 4n^2 + 8n + 4 + 5n + 2 + 25 = 4n^2 + 16n + 31 ですが、私の本によると時間計算量は n^2 + 5n + 25 です。

私は何を間違えましたか?

編集: 本が単純なステートメントのみの時間の複雑さを伝えていることは明らかです。私の質問はこれだと思います(タイトルにあったように):アルゴリズムの時間の複雑さは何ですか?

4

1 に答える 1

2

あなたの本は実行された数だけSimpleStatementsを数えています。

于 2012-10-12T03:42:00.687 に答える