我现在正在谈论一个算法类,并且真的很难理解如何提出递归公式。
说我有一个双嵌套for循环算法,用于查找存储在二维数组中的数字总和。我知道整个运行时类似于n ^ 2。但是我如何提出一个复原方程来证明这个算法是n ^ 2?
我的教授总是以某种数学T(0)= 0或T(1)= 1开始。然后T(n)= n ^ 2。当谈到我想要展示的工作时,我迷失了。
public static int sum2dMatrix(int[][] matrix, int a, int b)
{
int sum=0;
for (int i=0; i<=a; i=i++)
{
for (int j=0; j<=b; j=j++)
{
sum +=matrix[i][j];
}
}
return sum;
}
分配的实际问题是“举例说明一个运行时间为Ө(n ^ 2)的算法。给出详细的时间性能分析。”
是否只是简单地说a * b(数组的滞留)?在最坏的情况下,如果a = b,则会发生n ^ 2次添加。
答案 0 :(得分:0)
你可以看到,对于这个程序,它关于a * b,因为它迭代了矩阵的每个元素。您可以指出算法的行为,但没有精确的计算。 这是因为不是每台PC都有相同的架构。所以你可以说它是关于n ^ 2