嵌套的for循环内部循环用于其他数组的时间复杂度是多少?

问题描述

如果我们要测量一个阵列的时间复杂度,是否可以在计算时间复杂度时忽略另一个阵列? (即,如果我们只关心外部数组的增长,我可以说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
   }
}

解决方法

如果固定一个循环或另一个循环的数组大小,则可以忽略该循环。如果不是这种情况,那么您将同时考虑并将整个算法的复杂度表示为O(n * m)。

,

如果我们要测量一个数组的时间复杂度,我们可以在计算时间复杂度时忽略另一个数组吗?

是的,IFF 不同数组的大小是恒定的。

如果所讨论的数组是唯一一个与输入大小 n 成比例增长的数组,则表明另一个数组的大小为恒定,并且渐近分析中的常数因子are disregarded。因此,您将获得O( n )时间复杂度。

但是,如果另一个数组不是恒定大小,并且根据输入大小而变化,则应计算相应的相关性(根据输入如何变化),并乘以T = O( n )。

请注意,您的措辞:

如果我们要测量一个数组的时间复杂度

不太正确,因为您没有计算数组,列表或任何其他数据结构的时间复杂度,本身;而是根据您的算法进行计算,该算法可能涉及不同的数据结构,构造和操作。