我們如何找到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
我沒有要求你這樣做。如果我做得對,我要求驗證。顯然,我沒有要求你爲我這樣做,因爲我已經努力解決問題。 –