我一直在努力理解Big-O表示法。今天早些时候,我有一个练习的功能,并告诉它有一个O(n^5)
。我已经尝试过自己计算,但不知道我是否正确计算了T(n)
。
以下是我的两个问题:
1)我是否正确计算T(n)
,如果没有,那么我做错了什么?
2)为什么我们只关注变量到最高功率?
1 sum = 0; //1 = 1
2 for( i=0; i < n; i++) //1 + n + 2(n-1) = 1+n+2n-2 = 3n-1
3 for (j=0; j < i*i; j++) //n + n*n + 2n(n-1))= n+ n^2 + 2n^2-2n = 3n^2 -n
4 for (k=0; k < j; k++) //n + n*n + 4n(n-1))= n + n*n +4n*n-4n = 5n^2 -3n
5 sum++;
6 k++;
7 j++;
8 i++;
// so now that I have simplified everything I multiplied the equations on lines 2-4 and added line 1
// T(n) = 1 + (3n-1)(3n^2-n)(5n^2 -3n) = 45n^5 -57n^4 +23n^3 -3n^2 + 1