我想找到以下 C++ 代码的渐近复杂度 f(n)

I want to find the asymptotic complexity f(n) for the following C++ code

for(int i=0; i<rows; i++)
{
    for(int j=0; j<cols; j++)
    {
        statement;
    }
}

我观察到外循环运行 rows 次,内循环运行 rows * cols 次,语句也运行 rows*cols 次。我应该如何将它们放在一起找到一个通用函数 f(n) 来查找整个代码运行的步骤数,以便我可以找到它的下限和上限。

此代码的复杂度为 O(n²)。但是在您的情况下,复杂性被视为代码中的许多步骤。因此,如果您有行和列(实际上是一个矩阵),那么复杂性只是成员 rows*cols.

的乘积

更详细的方法是计算在您的语句中执行的所有代码。不过对于上面的近似方法来说还是不错的。

P.S。 要查看代码的边界,查看 f(x)=x²(在您的情况下)等函数的图形很有用。