任何人都可以为以下算法解释O(N)时间复杂度:
int count = 0;
for (int i = N; i > 0; i /= 2) {
for (int j = 0; j < i; j++) {
count += 1;
}
}
答案 0 :(得分:2)
count
的增量数为N+N/2+N/4+N/8+...<2N
答案 1 :(得分:1)
如果您递归地计算时间复杂度,则将得到T(n) = T(n/2) + n
。使用主定理,您可以得到c = log_2(1) = 0
和n = \Omega(n^c)
(主定理的第三种情况)的结果。因此,T(n) = \Theta(n)
或T(n) = O(n)
。