【问题标题】:Finding the time complexity function of these nested for loops查找这些嵌套 for 循环的时间复杂度函数
【发布时间】:2018-07-06 22:10:45
【问题描述】:

请记住,下面的伪代码与c++类似,所以我将使用c++标签

void matrixmult (int n, const number A[][], const number B[][], number C[][])
{
   index i, j, k;

   for(i = 1; i <= n; i++)                //the i for loop will run n + 1 times
       for(j = 1; j <=n; j++)             //the j for loop will run n(n+1) times
           C[i][j] = 0                    //this will run (n-1)n times                                  
           for(k = 1; k <=n; k++)         //the k for loop will run (n-1)(n+1) times
               C[i][j] = C[i][j]+ A[i][k] * B[k][j]; //this will run n((n-1)(n+1))

我的教授指示我找到上面最后一行代码的时间复杂度函数

我认为时间复杂度函数是T(n) = n(n-1)(n+1)

我需要有人仔细检查我的工作,我是不是在某个地方犯了错误?我在这里得到了正确的时间复杂度吗?

任何帮助将不胜感激

【问题讨论】:

标签: c++ function time time-complexity


【解决方案1】:

你有三个嵌套循环,每个循环 n 步,所以它是n^3

越来越详细。根据计算模型,您可以改为计算赋值、比较、乘法甚至内存访问的次数。

【讨论】:

  • 好的,谢谢,但我是否得到了每行代码的正确时间复杂度?你能帮我检查一下吗?我会很感激的
  • 你是怎么想出 n-1 和 n+1 的?
  • 我确定 i for 循环运行 n +1 次,因为循环显然会运行 n 次,但它也会在 n 之后再运行一次,因为它需要检查 i
  • 哦。不,现在它是这样工作的。您只计算进入循环的次数。就是这样,因为我们假设最终比较(当 i=n+1 时)不花费任何时间,至少比 j 循环的时间小。这取决于您希望提供的详细程度。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多