我们如何找到N和Big-O中给定算法的时间复杂度?例如,解释时间复杂性?
//One iteration of the parameter - n is the basic variable
void setUpperTriangular (int intMatrix[0,…,n-1][0,…,n-1]) {
for (int i=1; i<n; i++) { //Time Complexity {1 + (n+1) + n} = {2n + 2}
for (int j=0; j<i; j++) { //Time Complexity {1 + (n+1) + n} = {2n + 2}
intMatrix[i][j] = 0; //Time complexity {n}
}
} //Combining both, it would be {2n + 2} * {2n + 2} = 4n^2 + 4n + 4 TC
} //O(n^2)
这个O(n^2)和4n^2 + 4n + 4的时间复杂度是多少?如果不是,你是如何得到你的答案的?
此外,我有一个关于具有时间复杂性的双参数矩阵的问题。
//Two iterations in the parameter, n^2 is the basic variable
void division (double dividend [0,…,n-1], double divisor [0,…,n-1])
{
for (int i=0; i<n; i++) { //TC {1 + (n^2 + 1) + n^2} = {2n^2 + 2}
if (divisor[i] != 0) { //TC n^2
for (int j=0; j<n; j++) { //TC {1 + (n^2 + 1) + n^2} = {2n^2 + 2}
dividend[j] = dividend[j]/divisor[i]; //TC n^2
}
}
} //Combining all, it would be {2n^2 + 2} + n^2(2n^2 + 2) = 2n^3 + 4n^2 + 2 TC
} //O(n^3)
这个是O(N^3)和2n^3 + 4n^2 + 2吗?再次,如果没有,请问有人可以解释为什么?
'4'从哪里来? – christopher
所以你想我们做你的功课? – Dima
我没有要求你这样做。如果我做得对,我要求验证。显然,我没有要求你为我这样做,因为我已经努力解决问题。 –