public void f7(int N) {
for (int i = N/2; i > 0; i--) {
if (i % 2 == 0) {
for (int j = 0; j < N; j += 2) {
System.out.println("Hey");
}
} else {
for (int j = 1; j < N; j *= 2) {
System.out.println("You");
}
}
}
}
私はこの特定のコードブロックの漸近複雑度(Big O)を見つけようとしています。特定のdouble forループのBig O
私の考え方:最初のforループはO(N)であり、時間の半分が奇数であり、残りの半分が偶数であるため、forループのO(N) if文の中では、そして、else文の中のforループのためのO(Log N)は、j * = 2のためです。したがって、私の最終的な答えはO(N^2(Log N))です。ちょうどO(N^2)。誰かが私の考えでどこが間違っているのかを説明できるかどうか疑問に思っていましたか?ありがとう!
助けてくれてありがとう! – Rohan