このコードの時間計算量とそれを見つけるために使用されるロジックに混乱しています。
void doit(int N) {
for (int k = 1; k < N; k *= 2) { <----I am guessing this runs O(logN)
for (int j = 1; j < k; j += 1) { <------I am not sure how this one works.
}
}
}
私はすでにそれを手書きで解決しようとしました。しかし、私はまだそれを理解していません。
お時間をいただきありがとうございます。
編集:
それに別の質問を追加します。同じコンセプト、異なるフォーマット。
void doit(int N) {
int j, k; //I ended up getting this answer to be O(n^(n/2)) But then I was stuck after that...is that even the right answer?
for (k = 1; k < N / 2; k += 1) {
for (j = k; j < 2 * k; j += 1) [
x[j] = x[j-k] + x[j];//This doesn't really matter
}
}
}