【发布时间】:2015-10-01 00:41:02
【问题描述】:
所以我只是在考试中被问到这个问题,这让我发疯了。问题是这样的: 以下代码的时间复杂度以 n 表示:
int count = 0;
for(int i = 0; i < n; i++) {
for(int j = 1; j < n; j = j * 2) {
count++;
}
}
a) O(n log(n))
b) O(n^2)
我坚信答案是n(log(n)),因为内循环只运行k次,其中k^2
【问题讨论】:
-
你搞错了。
k^2 != n,而不是2^k = nnlogn对我来说看起来很准确。话虽如此,它非常容易测试。运行此代码并在末尾打印count并带有一些测试值。
标签: algorithm big-o time-complexity