第一章绪论(下)
级数
推荐读物:《具体数学》
常见复杂度
算数级数:与末项平方同阶
T(n)=1+2+3+...+n=O(n2)
幂方级数:比幂高1
T(n)=1k+2k+3k+...+nk=O(nk+1);
证明:k=0∑nxd≈∫0nxd+1dx
几何级数(a>1):与末项同阶
T(n)=a0+a2+a3+...+an=O(an)
证明:等比数列求和
例:
for(int i=1;j<n;i<<=1){
for(int j=0;j<i;j++){
...
}
}
分析
1+2+3+...+2log(n−1)=O(n)
调和级数
不收敛
k=1∑nn1=Θ(logn)
对数级数
不收敛
k=1∑nlogn=Θ(nlogn)
收敛级数
O(1)
迭代与递归
减而治之
原问题=平凡子问题+规模缩小后的子问题
应用:线性递归sum(1~n)
时间复杂度O(n)
T(n)=T(n−1)+O(1);T(0)=O(1);T(n)−n=T(n−1)−(n−1);=..=T(1)−1=T(0)=1
int sum(int *p,int len){
if(len==0) {
return 0;
}
else{
return p[len-1]+sum(p,len-1);
}
}