我想找到以下 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²(在您的情况下)等函数的图形很有用。
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²(在您的情况下)等函数的图形很有用。