解释算法的O(N)时间复杂度

时间:2018-10-31 15:11:09

标签: algorithm time-complexity

任何人都可以为以下算法解释O(N)时间复杂度:

int count = 0;
for (int i = N; i > 0; i /= 2) {
    for (int j = 0; j < i; j++) {
        count += 1;
    }
}

2 个答案:

答案 0 :(得分:2)

count的增量数为N+N/2+N/4+N/8+...<2N

答案 1 :(得分:1)

如果您递归地计算时间复杂度,则将得到T(n) = T(n/2) + n。使用主定理,您可以得到c = log_2(1) = 0n = \Omega(n^c)(主定理的第三种情况)的结果。因此,T(n) = \Theta(n)T(n) = O(n)