【问题标题】:What is time complexity for a nested for loop where the inner loop is for a different array?内部循环用于不同数组的嵌套 for 循环的时间复杂度是多少?
【发布时间】:2021-01-08 01:37:35
【问题描述】:
如果我们测量一个数组的时间复杂度,我们可以在时间复杂度计算中忽略另一个数组吗? (即,如果我们只关心外部数组的增长,我可以说 O(N) 还是我必须给出总体时间复杂度 O(N*M)。
for (int i = 0; i <= n.size(); ++i) {
// codes inside the body of outer loop
for (int j = 0; j <= m.size(); ++j) {
// codes inside the body of both outer and inner loop
}
}
【问题讨论】:
标签:
java
arrays
time
complexity-theory
【解决方案1】:
如果我们测量一个数组的时间复杂度,我们可以在计算时间复杂度时忽略另一个数组吗?
是的,IFF 不同 数组的大小是恒定的。
如果有问题的数组是唯一一个与输入大小n成比例增长的数组,这意味着另一个数组的大小是常量,并且渐近分析中的常数因子are disregarded。所以,你最终会得到 O(n) 时间复杂度。
但是,如果另一个数组的大小不是常量,并且它会根据输入大小而变化,则应计算相应的相关性(它如何根据输入而变化)并乘以T=O(n).
请注意,您的措辞:
如果我们测量一个数组的时间复杂度
不太正确,因为您没有计算数组、列表或任何其他数据结构的时间复杂度,本身;而是为您的算法计算它,这可能涉及不同的数据结构、构造和操作。
【解决方案2】:
如果该循环的数组大小是固定的,则忽略一个或另一个循环可能是可以的。如果不是这种情况,那么您会同时考虑并将整个算法的复杂度声明为 O(n*m)。