算法-求余算法优化问题

发布于 2016-11-15 13:21:43 字数 176 浏览 1434 评论 1

算法优化问题
现有算法如下:
while (b<>0)
b:=a%b
其中a,b为整数 a>b>0
算法复杂度为O(a^1/3) Ω(log a)
问题:
这个算法复杂度怎么计算出来的?
怎么优化这个算法让算法复杂度降低?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

晚风撩人 2017-04-29 00:07:56

算法复杂度,主要由两个方面去衡量。即时间复杂度和空间复杂的。即所谓的时空问题。
你这个while语句热行的次数,叫时间频度。记为T(n)。你可以理解为循环的次数。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n^2+3n+4与T(n)=4n^2+2n+1它们的频度不同,但时间复杂度相同,都为O(n^2)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n)(以2为底n的对数,下同),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,
k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。
同理:
降低算法的复杂度,也是从时间和空间上考虑。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文