请参阅下面的解决方案,我想要一些建设性的反馈。
下面 O(n) 中的运行时间是多少。
int a = 0;
int k = n*n*n; //n^3
while(k > 1)
{
for (int j=0; j<k; j++) //runs from 0->k
{ a--; }
k = k/2; //divides by 2 each iteration
}
每次 for 循环运行时,它都会给出一个常数 x k。
= 0xn^3 + 1x (n^3/2) + 2x(n^3/4) +...+ nx(n^3/2^n)
= n^3 (0 + 1/2 + 2/ 4 +...+ n/2^n) <- 有谁知道我可以如何进一步简化它?
编辑:我假设我们会以某种方式使用算术级数......