算法:绪论算法复杂度
常见级数算法复杂度:
1,算数级数:与末项平方同阶
T(n)=1+2+3+...=n(n+1)/2=O(n2)
2,幂方级数:比幂次高出一阶
T2(n)=12+22+32+...n2=n(n+1)(2n+1)/6=O(n3)
T3(n)=13+23+33+...n3=n2(n+1)2/4=O(n4)
T4(n)=14+24+34+...n4=n(n+1)(2n+1)(3n2+3n-1)/30=O(n5)
3, 几何级数(a>1):与末项同阶
Ta(n)=a0+a1+a2+...an=(an+1-1)/(a-1)=O(an)
4,收敛级数
1/1/2+1/2/3+1/3/4+...1/(n-1)/n=1-1/n=O(1)
1+1/22+...1/n2<1+1/22+...=∏2/6=O(1)
常见循环复杂度
for(int i=0;i<n;i++) for(int j=0;j<n;j++) 01operation(i,j) 算数级数:
∑i=0n-1=n+n...+n=n*n=O(n2)
for(int i=0;i<n;i++) for(int j=0;j<i;j++) 01operate(i,j);
算数级数:
∑i=0n-1=0+1+2+...n=n(n-1)/2=O(n2)
for(int i=1;i<n;i<<=1) for(int j=0;j<i;j++) 01operate(i,j); 几何级数:
1+2+4+...+2^log2(n-1)=....=O(n)