这个算法的时间复杂度是如何计算出来的?

2-11的这个程序就是b中所说的例程这是我的想法:2-11的复杂度是logN,那么ai*X^i就是(1+log1)+(1+log2)+....+(1+logN)=n+(l... 2-11的这个程序就是b中所说的例程
这是我的想法: 2-11的复杂度是logN, 那么ai*X^i就是(1+log1) + (1+log2) + .... + (1+logN) = n + (log1 + log2 +... + logN) = n + log(1*2*3*..*n) = n + log(N!) . 然后根据斯特林公式 : . 复杂度= n + log((n/e)^n) = n + nlog(n/e) [前面的根号2πn太小了直接舍去] , 所以时间复杂度为nlogN.

不知道这么想对不对? 或者有什么更加标准化的计算复杂度的过程, 望指明.
拜托了!
展开
 我来答
psycho_shoot
2015-02-27 · TA获得超过117个赞
知道答主
回答量:28
采纳率:0%
帮助的人:33.4万
展开全部
如果题目允许优化程序的话,计算X的多次幂时可以保留中间结果,比如你已经有了X^3,计算X^4的时候就不用从头乘一遍,也不用二分着来,直接X^3在乘X就可以了。如果采用这样的策略,这题是可以以O(N)实现的。

如果不考虑上面所说,复杂度是NlogN,你的计算过程可行。另外也可估算,即单次求幂是logN,求N次就是NlogN,这样估出来的是上界。但是在不保留中间结果的算法下,是无法达成O(N)的,故可以不严谨地“直觉”知道下界也是NlogN。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式