Algorithm 我试图理解时间复杂度是如何精确计算的
我在网上练习时发现了这个问题:Algorithm 我试图理解时间复杂度是如何精确计算的,algorithm,time-complexity,Algorithm,Time Complexity,我在网上练习时发现了这个问题: def test1: 极限=2 x=“a” 对于范围内的i(限制): 对于范围内的j(极限): 打印x def测试2: 极限=2 x=“a” 对于范围内的i(限制): 打印x 对于范围内的i(限制): 打印x 问题是test1和test2的时间复杂度是多少?我想两者的答案都是O(n²) 如果限制是20或30,那么test2的复杂度将是O(2n),这与O(n)相同,并且test1的复杂度将是O(n²)是否正确 如果test2中的for循环重复limit-1次,其中
def test1:
极限=2
x=“a”
对于范围内的i(限制):
对于范围内的j(极限):
打印x
def测试2:
极限=2
x=“a”
对于范围内的i(限制):
打印x
对于范围内的i(限制):
打印x
问题是test1
和test2
的时间复杂度是多少?我想两者的答案都是O(n²)
如果限制是20或30,那么test2
的复杂度将是O(2n),这与O(n)相同,并且test1
的复杂度将是O(n²)是否正确
如果
test2
中的for
循环重复limit-1
次,其中limit=n
,那么复杂性又是什么呢?首先,复杂性理论是一个非常有趣的研究领域,但肯定不是关于猜测的
首先,函数的复杂性是:
test1o(N^2)
和test1o(N)
,但这肯定是在假设N=limit
这应该是一个具有特定值范围的变量时,即1假设N=limit
,第一个是O(N^2),第二个是O(N),而不管限制如何。如果limit=n-1
,则数学也不会改变。我强烈建议你阅读教科书或参考资料,了解如何计算大O符号,我认为你并不真正理解时间复杂性是关于增加输入大小对算法的总体影响test1
在相同的输入上有一个嵌套循环,因此增加输入将增加n
迭代。这对算法有指数效应,尤其是二次效应。第二种方法在同一输入上使用两个非嵌套的循环。然而,增加limit
并不会改变迭代的大小,所以它只是O(n)。