微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

给定每次迭代执行的计算次数,您如何找到算法的复杂度?

如何解决给定每次迭代执行的计算次数,您如何找到算法的复杂度?

假设有一个输入大小为 n 的算法。在第一次迭代中,它执行 n 次计算,然后留下大小为 floor(n/2) 的问题实例 - 对于最坏的情况。现在它执行 floor(n/2) 计算。因此,例如,n=25 的输入将执行 25+12+6+3+1 次计算,直到得出答案,总共 47 次计算。您如何将其转化为 Big O 形式以找到最坏情况的复杂度?

解决方法

你只需要正式的写出对应的递归:

T(n) = T(n/2) + n = n + n/2 + n/4 + ... + 1 = 
n(1 + 1/2 + 1/4 + ... + 1/n) < 2 n 
=> T(n) = O(n)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。