如何解决除以2直到达到1的时间复杂度是多少?
i=100
while i>=1:
i=i//2
print(i)
以下代码的上限时间复杂度是多少?
解决方法
如果i = 100
是常数,则时间复杂度为O(1)
。
如果i是随输入而变化的变量,则将i除以2的时间复杂度为O(log i)
。
print(i)
被执行log i
次,因此不会改变最终时间复杂度。
考虑到i
可以改变或改变,这是O(log n)
的对数复杂度。 (否则,这将是恒定的时间)
循环数与i
的大小成对数比例。
查看其缩放比例:
i size -> # of loops
10 -> 4
100 -> 7
1000 -> 10
10000 -> 14
100000 -> 17
作为参考,了解不同的复杂性如何随时间变化:
(摘自https://medium.com/better-programming/a-gentle-explanation-of-logarithmic-time-complexity-79842728a702):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。