请教计算n的n次方,使其时间复杂度为log(n)

nwf 2002-11-11 12:55:51
能否再证明一下?
...全文
597 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wugifer 2002-11-12
  • 打赏
  • 举报
回复
随着乘数越来越大,乘法的复杂性不能简单理解为O(1),Riemann的算法断定为O(lg(n))似乎欠妥当。
Riemann 2002-11-11
  • 打赏
  • 举报
回复
n可唯一的表示成2的方幂的和的形式,因此对输入的n,依次计算n^2=n*n,n^4=n^2*n^2,...,并保存到一个数组中,然后作一些判断和加法即可,
不难证明上述算法的时间复杂度为O(log2(n))
mooncat2000 2002-11-11
  • 打赏
  • 举报
回复
提示一下,不断平方向上比单纯的一个一个乘要增长得快得多
尤其是n很大时,这就是log(n)复杂度的特点
想一想如何控制?

还有,乘到超过 n 的 n/2 次方,后面怎么办?
呵呵,你当然应该把前面乘的记录保存在一个数组里,这时就有用了

如果很需要代码的话,我可以给你,但最好自己想了啊
nwf 2002-11-11
  • 打赏
  • 举报
回复
没有人帮帮忙吗?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧