该程序的复杂性是什么?

时间:2019-01-28 18:18:23

标签: algorithm complexity-theory

我一直在寻找如何计算算法复杂度的时间..尽管有一些很好的解释,但我似乎并不确切地了解它是如何工作的..所以我想也许在这个例子中,有人可以为我澄清

void test(int n){
for ( int i = 1; i <= n; i++, n=n/2)
    for(int j = 1; j <= n; j++)
       ..O(1)..
        }

1 个答案:

答案 0 :(得分:0)

第一次运行外部循环,内部循环将运行n次。
第二次外部循环运行时,内部循环将运行n / 2次。
第三次外循环运行,内循环将运行n / 4次。
外循环第四次运行,内循环将运行n / 8次。
。 。 。
外循环最后一次运行,内循环将运行1次。

对系列求和时得到

n + n / 2 + n / 4 + n / 8 + ... = 2n

内部循环的主体总共执行2n次,因此算法的复杂度为O(n)。