【问题标题】:What's the meaning of "complexity" - how do I calculate it? [duplicate]“复杂性”是什么意思 - 我如何计算它? [复制]
【发布时间】:2013-11-14 08:02:28
【问题描述】:

正如标题所说:我不知道“复杂性”是什么意思

当我访问声纳结果的网页时,我非常想知道如何计算它。

【问题讨论】:

  • 由于这是用声纳标记的,我猜“复杂性”是他们在 docs.codehaus.org/display/SONAR/Metrics+-+Complexity 的定义,不是复杂性的大 O 符号。
  • 我认为这个问题不属于stackoverflow,除非你的意思是与声纳无关的代码复杂性。

标签: sonarqube code-complexity


【解决方案1】:

维基百科上的复杂性定义here

复杂性基本上意味着您的程序执行的操作数量与输入成正比。通常它是根据您的循环或递归函数的深度计算得出的。

例子:

这具有 O(n) 的复杂度,因为 for 循环中的操作被执行了 n 次。

for (int i = 0 ; i < n ; ++i)

复杂度为 O(n^2)

 for (int i = 0 ; i < n ; ++i)
      for (int j = 0 ; j < n ; ++j)

这也有 O(n) 的复杂度:

 void recursion (int level, int n) {
      if (level < n)
          recursion(level + 1, n);
 }

更新:

阅读您的评论,我认为您指的是循环复杂度,您可以阅读它here。在描述部分有一个相当好的解释,但老实说,我从未使用/听说过这个有点复杂。

【讨论】:

  • 复杂度是一种渐近度量。它不会告诉您程序执行的操作数量。它会告诉您如果 N 变大,它将执行多少操作。
  • 这么快 ^_^ 但我不确定这是不是答案,在声纳网页中,它显示复杂性数据如下:2.5/function 17.2/class 19.9/file跨度>
  • 它告诉您执行的操作数,与 N 成正比。抱歉,我没有充分解释,但英语不是我的母语。
  • 您是否将大 O 表示法称为复杂性?如果您不确定,那么您可能是 ;)
猜你喜欢
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 2019-09-12
  • 2015-01-22
相关资源
最近更新 更多