标签:def 复杂度 占用内存大小 占用 -o nbsp ++ loaded 执行
算法的优劣取决于两点 1:执行时间 2:占用内存大小
时间复杂度,说的不是算法执行的时间,而是算法执行的次数
T(n) =O(1)
method(){
int i=1;
int j=1;
i++;
j++;
.....
i++
j++;
}
上述方法,从上到下只执行一次,可以这么表示时间复杂度 T(n) =O(1)
T(n) =O(n)
for(i=0;i++;i<n){
j=i;
j++;
}
上述循环,执行次数取决于n的大小,可以这么表示时间复杂度T(n) =O(n)
T(n) =O(log2n)
int i=1;
while(i<n){
i=i*2;
}
上述while循环,执行次数,取决于n,但是明显不是执行了n次,执行次数是,log2n,
假如n=16,循环次数是4次,这种情况的时间复杂度可以这么表示 T(n) =O(log2n)
T(n) =O(nlog2n)
for(i=1;i<n;i++){
while(j<n){
j=j*2
}
}
while循环里面执行,次数是log2n次,for循环执行n次,总次数是nlog2n
时间复杂度可以这么表示 T(n) =O(nlogN)
T(n) =O(n*n)
for(i=1;i<n;i++){
for(i=1;i<n;i++){
j=i;
}
}
上述执行次数是,n*n
时间复杂度可以这么表示 T(n) =O(n2)
或者T(n) =O(n*n)
占用的内存空间的大小
int i=1;
int j=1;
i++;
j++;
m= i+j;
?
i,j,m的内存不会随数据变化而变化
故空间复杂度可以表示为
S(n)=O(1)
int[] m=new int[n]
for(i=1;i<n;i++){
j=j*2
}
?
分配的内存空间的大小是 m数据决定的
故时间复杂度可以表示为
S(n) = O(n)
for(i=1;i<n;i++){
new int[n]
}
根据n的大小,决定创建数组的次数,
故时间复杂度可以这么表示
S(n) =O( n*n)
标签:def 复杂度 占用内存大小 占用 -o nbsp ++ loaded 执行
原文地址:https://www.cnblogs.com/chtlx/p/13920347.html