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

嵌套循环的时间复杂度

如何解决嵌套循环的时间复杂度

我下面有一个程序,用于计算最大成对乘积。

    for i in range(n):
     for j in range(i + 1,n):
       product = max(product,a[i] * a[j])

根据我的计算,以上程序需要(n ^ 2--n)个步骤,其中n是元素数,但是我正在阅读的书中说n ^ 2个步骤。 谁能帮助我理解正确的方法

解决方法

在Big O表示法中,仅考虑方程式的Maximum Degree项。 例如,

1) n + 7 -在这里我们仅考虑n,因此n的 O 是时间复杂度。

2) n ^ 2 + n + 3 -在这里我们仅考虑n ^ 2,因此 n ^ 2的O 是时间复杂度。

3) 3x(n ^ 2)-在这里我们仅考虑n ^ 2,因此 n ^ 2的O 是时间复杂度。

由于大的O表示法是近似的时间复杂度,因此我们忽略了所有小的术语。

对于您的方程式 n ^ 2-n

n 视为 10000

n ^ 2 = 100000000

n ^ 2-n = 99990000 。几乎等于 100000000,即n ^ 2

所以我们只考虑最高学历的术语。因此,时间复杂度为 O(n ^ 2)

,

在处理Big O表示法时,您总是采用最大的幂项-逻辑很简单-随着n的增大,n ^ 2的增长将比n快,因此时间的增长率将由n决定。 ^ 2。

因此正确的大O是O(n ^ 2)

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