编程语言
首页 > 编程语言> > java-如何找到此函数的增长顺序?

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