【问题标题】:Complexity Analysis in C++ [duplicate]C ++中的复杂性分析
【发布时间】:2021-11-17 00:49:57
【问题描述】:

你们能帮我确定以下算法实现的复杂性,以添加、乘法和转置 n X n 矩阵: 非常感谢!!

for(i = 0; i < n; i++)
   for( j = 0; j < n; j++)
      a[i][j] = b[i][j] + c[i][j];


for( i = 0; i < n; i++)
   for(j = 0; j < n; j++)
      for(k = a[i][j] = 0; k < n; k++)
         a[i][j] += b[i][k] * c[k][j]; 


for(i = 0; i < n - 1; i++)
   for(j = i + 1; j < n; j++){
      tmp = a[i][j];
      a[i][j] = a[j][i];
      a[j][i] = tmp;

}

【问题讨论】:

  • 您在尝试自己确定复杂性时遇到了哪些问题?
  • 建议:陈述你认为的答案和你的推理,然后问你是否正确。你可能是对的,答案很简单,“是的”。如果没有,这为我们提供了一个基线来形成答案,并允许我们定位错误并向您展示如何在未来不犯错误。此外,永远不要忽视展示作品的社会重要性。
  • O(n²) + O(n³) + O(n²)O(n³)

标签: c++ algorithm data-structures


【解决方案1】:

如果您将循环相互嵌套,则复杂性将是长度(执行次数)的乘积。

因此,当您有 2 个长度为 n 的循环(添加、转置)时,复数将是 O(n*n)=O(N^2),当您有 3 个时,它将是 O(n*n*n)=O(n^3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多