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

除以2直到达到1的时间复杂度是多少?

如何解决除以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): enter image description here

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