标签: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