【问题标题】:What is the time complexity for this code这段代码的时间复杂度是多少
【发布时间】:2023-02-26 03:32:25
【问题描述】:

以下算法的时间复杂度 T(n) 是多少? 其中数组 A 的索引为 1 到 n。

     int add_them ( int n , int A[ ] ) { 
          index i , j , k ;
          j= 0 ;
          for ( i = 1 ; i <= n ; i++)
                 j = j + A[i]; 
          k = 1;
          for ( i = 1 ; i <= n ; i++) 
                  k =k +k ;
           return j + k ; 
}

第一个循环 = n
第二个循环 = n

T(n) = n + n = 2n = O(n)

我不确定我的回答是否正确

【问题讨论】:

    标签: algorithm time-complexity


    【解决方案1】:

    你的分析是正确的,算法的时间复杂度是O(n)。

    第一个循环迭代 n 次,时间复杂度为 O(n)。

    第二个循环也迭代 n 次,它的时间复杂度也为 O(n)。

    最后,j和k相加需要的时间是常量,所以不会影响整体的时间复杂度。因此,总时间复杂度是两个循环的时间复杂度之和,即O(n) + O(n) = O(2n) = O(n)。

    【讨论】:

      【解决方案2】:

      你是对的。

      请记住,2 个连续的循环(未嵌套)不一定会使它成为 O(n^2)。仅当它们嵌套时。

      当然也有例外^

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-14
        • 2022-01-13
        • 2015-03-31
        • 1970-01-01
        • 2012-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多