【问题标题】: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)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 2019-05-18
        • 1970-01-01
        • 2015-12-21
        • 1970-01-01
        相关资源
        最近更新 更多