は、私が理解スニペットそのような単純な文:は
int x = 5; // is 1 or O(1)
そして、whileループのような単一のためと
while(i<); // is n+1 or O(n)
と同じforループ(依存)しばらくネストされたかのようなforループで :
for(int i = 0; i<n; i++){ // this is n + 1
for(int j = 0; j<n; j++){ // this is (n+1)*n, total = O(n^2)
}
はまた、いつでも我々はそれがそうでエフェクトlog_3(n)と3倍、log_2(n)のだ倍増効果を持っています。また、制御変数が半分または四分されている場合は、log_2(n)またはlog_4(n)のいずれかになります。
しかし、私ははるかに複雑な例を扱っています。これらの例をどのように理解するか私は答えを持っている私はちょうど試験紙にそれらを働かせる方法を知らない。
例1:
for (i = 1; i < (n*n+3*n+17)/4 ; i += 1)
System.out.println("Sunshine");
例2:
for (i = 0; i < n; i++)
if (i % 2 == 0) // very confused by what mod would do to runtime
for (j = 0; j < n; j++)
System.out.print("Bacon");
else
for (j = 0; j < n * n; j++)
System.out.println("Ocean");
例3:
for (i = 1; i <= 10000 * n: i *= 2)
x += 1;
は
返信いただきありがとうございます! 私は理解し始めていると思う。私が最初に考えたのは、制御変数がどこに来て、何が起こるかということでした。したがって、渡された変数 'n'に何が起こっているのかを調べ、コード全体でどのように歪んでいるのかを見てください。しかし今、私はそれに影響を与えることを読んでいるのですか?どうして?だから、私は調べる必要があります、 'n'制御変数または 'i'変数をインクリメントしますか? ありがとうございました – yre
あなたの質問は一般的に意味が分かりません。 nの関数として各例の実行時間がどのように変化するかを理解する必要があります。 –
nのスケール。したがって、コードを見ると、コードとの関係でどのようにスケールされるのですか?だから私はそれに焦点を当てているnは、100000になる可能性がありますので、 'n'がコードのセクションに存在しない場合、nには影響しません。(i = 0; i
yre