c# - 嵌套循环复杂度

标签 c# algorithm time-complexity

我有这个 C# 方法:

private void Process()
{

  foreach (Vat vat in vats) // n elements
  {
    foreach (ProcessResultRow row in processResultRows) // m elements
    {
      // something here
    }

    foreach (KeyValuePair<int, Shop> entry in _shopsList) // j elements
    {
      // something else here
    }
  }

}

我知道两个嵌套循环的复杂度为 O(n^2)。这个例子对吗?

我犹豫不决,因为在外部循环中我有两个相同级别的循环。

最佳答案

如果循环没有returnbreak 和类似的东西(例如抛出异常),那么复杂性是

O(n * (m + j)) == O(n * m) + O(n * j)

如果 mj 都是常量我们有

O(n*m + n*j) == m * O(n) + j * O(n) == O(n)  

如果至少有一个 mj 使得 m ~ nj ~ n 那么我们有

// here m ~ n and j is some const
O(n * m) + O(n * j) == O(n * n) + j * O(n) == O(n**2) + O(n) == O(n**2)

关于c# - 嵌套循环复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55335298/

相关文章:

javascript - 如何将 JSON 对象从 ajax 传递到 ASP.net 页面

c# - Visual Studio Windows 窗体应用程序 - 缓存表单输入

c# - Selenium c# : How to get the Id attribute?

python 3 : Reverse consecutive runs in sorted list?

algorithm - 贪心算法的复杂度

sql - 内置 SQL 函数的时间复杂度,例如 sum、count、avg

c# - 有没有办法部署WP8应用程序 "without Cable"

c - C中链表的递归算法

java - 我怎样才能影响 minimax 算法更喜欢立即奖励?

c - C 中数组声明和定义的时间复杂度是多少?