Time Complexity: O(logN) or O(N)?
analysis, big-o, time-complexity
Solution
1, 1/2, 1/4, 1/8... 1/2 ** n is a geometric sequence with a = 1, r = 1/2 (a is the first term, and r is the common ratio).
Its sum can be calculated using the following formula:
In this case, the limit of the sum is 2, so:
n + n/2 + n/4 ... = n(1 + 1/2 + 1/4...) -> n * 2
Thus the complicity is O(N)
Problem
I thought the time complexity of the following code is O(log N), but the answer says it's `O(N)`. I wonder why: ``` int count = 0; for (int i = N; i > 0; i /= 2) { for (int j = 0; j < i; j++) { count += 1; } } ``` For the inners for-loop, it runs for this many times: `N + N/2 + N/4 ...` it seems to be `logN` to me. Please help me understand why here. Thanks