【问题标题】:Time Complexity loop inside a loop with increased starting index具有增加的起始索引的循环内的时间复杂度循环
【发布时间】:2021-11-18 06:36:09
【问题描述】:
我知道时间复杂度问题的主要概念,但我总是陷入这些棘手的问题,谁能解释一下为什么答案是这个问题的思考过程。
同样在这种情况下,内循环的第一个索引每次迭代都乘以 3,如果内循环的起始索引保持不变并且每次迭代的步长乘以 3,这个问题的答案是什么
for j in range(1, (n**3) + 1, i * 3) :
【问题讨论】:
标签:
python
time-complexity
big-o
computer-science
【解决方案1】:
这里的数学可能有误,但是...
由于显而易见的原因,第一个循环是 O(n^6),但内循环不会显着增加复杂性,因为 n^3 = n^6/n^3 除了随着 i 的增加而缩短,使其成为 n^3/3。此外,在某些时候i*3 已经超过 n^3 并且内部循环甚至不会触发。
所有这些似乎表明对复杂性的贡献可以忽略不计(在 Big-O 术语中),因此复杂性等于外循环的复杂性,因为 n 趋于无穷大。
至于第二个问题,如果我没记错的话,保持起始索引不变会使复杂度增加 n^3 倍,因此 n^6 * n^3 = n^9。