作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
所以我在这个问题上遇到了一些麻烦,因为变量 i。我只是不确定在第二个 while 循环中如何处理它。对于我的外循环,我知道它将运行 log_4(n^2) 次迭代。对于内部 while 循环,我计算的迭代次数为 (2n^3 - 3)/i。我只是在努力研究如何将这两者放在一起以获得该功能的总体复杂性。非常感谢任何输入!
function p(n)
i = 1;
while i < n^2 do
j = 3;
while j < 2n^3 do
j = j + i;
end
i = 4i;
end
最佳答案
我不擅长数学,但我正在尝试回答这个问题。
首先让我们从第一次迭代开始计算:
总共j增加了:(2n^3)+(2n^3)/4+(2n^3)/16+(2n^3)/64+...+(2n^3)/(n^2) 次。即:
2n^3*(1+1/4+1/16+1/64+1/256+...+1/(n^2))
= 2n^3((1-(1/4)^(log_4(n^2)))/(1-(1/4))) // sum of geometric progression
= 2n^3 * (1-1/n^2) * 4/3
所以它是 O(n^3)。
关于嵌套 While 循环的算法复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33207379/
我是一名优秀的程序员,十分优秀!