请记住,以下伪代码与c ++类似,因此我将使用c ++标记
void matrixmult (int n, const number A[][], const number B[][], number C[][])
{
index i, j, k;
for(i = 1; i <= n; i++) //the i for loop will run n + 1 times
for(j = 1; j <=n; j++) //the j for loop will run n(n+1) times
C[i][j] = 0 //this will run (n-1)n times
for(k = 1; k <=n; k++) //the k for loop will run (n-1)(n+1) times
C[i][j] = C[i][j]+ A[i][k] * B[k][j]; //this will run n((n-1)(n+1))
我的教授指示我找到上面最后一行代码的时间复杂度函数
我认为时间复杂度函数是T(n)= n(n-1)(n + 1)
我需要有人来仔细检查我的工作,我是否在某个地方犯了错误?我在这里得到了正确的时间复杂度吗?
任何帮助将不胜感激
答案 0 :(得分:0)
你有三个嵌套循环,每个循环n个步骤,所以它是n^3
。
更详细。根据计算模型,您可以改为计算分配数,比较数,乘法数甚至存储器访问数。