【问题标题】:when would a statement inside a loop affect the complexity?循环内的语句何时会影响复杂性?
【发布时间】:2018-03-23 20:09:44
【问题描述】:

例如,如果我有

for(int i = 1; i < 500; i++){
  for (int j = 0; j < N; j++){
    if (array[j] == someNumber && i == someNumber)
      counter++;
}
  }

如果数组中的所有数字都相同,因此每个数字的计数器都会增加,这会使复杂度 O(2N)、O(N 平方) 还是仍然只是 O(N),而它永远不会变成 O (2N)?我希望这个问题是有道理的。我发现很难理解语句如何影响复杂性。

【问题讨论】:

  • 他们没有。 O-Notation 的复杂性描述了最坏的情况。

标签: java loops time-complexity big-o nested-loops


【解决方案1】:

由于循环中的语句需要固定时间,因此它们对算法的整体复杂性没有任何影响。您发布的代码的复杂性仅为 O(N),因为您的外循环执行了恒定次数,而您的内循环执行了 N 次。

如果您在循环中执行某些操作,例如调用在数组中搜索值或对列表进行排序的函数,这将是一个重要的例子。由于这些操作取决于数组(或列表)的大小,因此在计算算法的复杂度时必须将它们考虑在内。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 2016-02-27
    • 2021-05-23
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    相关资源
    最近更新 更多