Algorithm 特殊双For循环的时间复杂度?

Algorithm 特殊双For循环的时间复杂度?,algorithm,big-o,time-complexity,Algorithm,Big O,Time Complexity,所以我刚在考试中被问到这个问题,这让我发疯。问题是: 以下代码的时间复杂度(以n为单位): int count = 0; for(int i = 0; i < n; i++) { for(int j = 1; j < n; j = j * 2) { count++; } } int count=0; 对于(int i=0;i

所以我刚在考试中被问到这个问题,这让我发疯。问题是: 以下代码的时间复杂度(以n为单位):

int count = 0;
for(int i = 0; i < n; i++) {
    for(int j = 1; j < n; j = j * 2) {
        count++;
    }
}
int count=0;
对于(int i=0;i
a) O(n对数(n))

b) O(n^2)


我坚信答案是n(log(n)),因为内部循环只运行k次,其中k^2您的推理是正确的,只需在下面对答案进行少量编辑,即
O(n log n)
。答案不可能是
O(n^2)

2^k=n
so
k=log n

内部循环将运行:
logn
times
外部循环将运行:
n次


因此,这是
O(n log n)
时间复杂性您的推理是正确的,只需在下面对答案进行少量编辑,即
O(n log n)
。答案不可能是
O(n^2)

2^k=n
so
k=log n

内部循环将运行:
logn
times
外部循环将运行:
n次


因此,这是
O(n log n)
时间复杂性您的推理是正确的,只需在下面对答案进行少量编辑,即
O(n log n)
。答案不可能是
O(n^2)

2^k=n
so
k=log n

内部循环将运行:
logn
times
外部循环将运行:
n次


因此,这是
O(n log n)
时间复杂性您的推理是正确的,只需在下面对答案进行少量编辑,即
O(n log n)
。答案不可能是
O(n^2)

2^k=n
so
k=log n

内部循环将运行:
logn
times
外部循环将运行:
n次


这就是时间复杂度,你已经把它倒过来了<代码>k^2!=n
,而不是
2^k=n
nlogn
在我看来是准确的。也就是说,它非常容易测试。运行此代码,并在末尾打印带有一些测试值的
count
。这是向后的<代码>k^2!=n
,而不是
2^k=n
nlogn
在我看来是准确的。也就是说,它非常容易测试。运行此代码,并在末尾打印带有一些测试值的
count
。这是向后的<代码>k^2!=n
,而不是
2^k=n
nlogn
在我看来是准确的。也就是说,它非常容易测试。运行此代码,并在末尾打印带有一些测试值的
count
。这是向后的<代码>k^2!=n
,而不是
2^k=n
nlogn
在我看来是准确的。也就是说,它非常容易测试。运行此代码并在末尾打印带有一些测试值的
count