java-如何找到此函数的增长顺序?
作者:互联网
功能如下:
int sum = 0;
for (int n = N; n > 0; n /= 2)
for (int i = 0; i < n; i++)
sum++;
他们给出的增长顺序是O(n).那么他们是如何得到答案的呢?
解决方法:
该函数的时间复杂度是迭代次数:
Time complexity = sum = N + N/2 + N/4 + ... = N*(1 + 1/2 + 1/4 + ... + 1/(2^logN))
我们知道,无限序列1/2 1/4 …是一个convergent sequence,收敛到1.
将结果应用于上式:sum< = N *(1 1)= 2 * N〜O(N) 因此,函数的时间复杂度受O(N)限制
标签:time-complexity,java 来源: https://codeday.me/bug/20191119/2034888.html