【发布时间】:2011-11-28 07:32:55
【问题描述】:
我正在分析一种算法,我只想知道我是否走在正确的轨道上。
对于这个算法,我只计算行中包含 *** 的乘法。
算法如下:
- 所以我从最里面的行开始,我可以看到那里有 2 个操作(两个乘法)。
- 现在我正在查看最里面的 2 个循环,所以我可以看出
p=p*20*z被准确地执行了(j) + (j-1)+(j-2)+(j-3)...1次。这恰好等于j(j+1)/2。 - 所以总的来说,因为有两个乘法,它发生在
2 * (j(j+1)/2)。 - 最后,“i”循环恰好发生了 n 次,所以总共是
n(2 * (n(n+1)/2))。
这就是我背后的思考过程。我对么?谢谢。
【问题讨论】:
-
不,你不是。最终结果应该只包含
n。你有j那里。 -
感谢您的快速响应。会是 n(2 * (n(n+1)/2)) 吗?
-
实际上,我认为这只是一个错字,因为将 j 替换为 n 对于他在那里经历的推导是正确的,因为 n 是最大的 j。 @PragmaOnce 是的,尽管显然可以简化很多。
-
是的,这就是我在原始问题中的意思,但忘记用 n 替换 j。谢谢你们俩。有人想发布答案以便我将其标记为正确吗?
标签: algorithm computer-science big-o time-complexity