算法时间复杂度分析

一.级数

算术级数:与末阶平方同阶

T(n)=1+2+...+n=n(n+1)/2=O(n^2)

幂方级数:比幂次高出一阶

T(n)=1^2+2^2+...+n^2=n(n+1)(2*n+1)/6=O(n^3)

T(n)=1^3+2^3+...+n^3=n^2(n+1)^2/4=O(n^4)

T(n)=1^4+2^4+...+n^4=n(n+1)(2*n+1)(3*n^2+3*n-1)/30=O(n^5)

几何级数(a>1):与末项同阶

 T(n)=a^0+a^1+a^2+...a^n=(a^(n+1)-1)/(a-1)=O(a^n)  

收敛级数

1/1/2+1/2/3+1/3/4+...+1/(n-1)/n=1-1/n=O(1)

1+1/2^2+...1/n^2<1+1/2^2+...=pi^2/6=O(1)

1/3+1/7+1/8+1/15+1/24+1/26+1/31+1/35+...=1=O(1)

可能未必收敛,然而长度有限

h(n)=1+1/2+1/3+...+1/n=O(log(n)) 

log1+log2+log3+...+logn=log(n!)=O(nlog(n))

二.循环分析 

for(int i=0;i<n;i++)

for(int j=0;j<n;j++)

分析:T(n)=n+n+...+n=n*n=n^2

时间复杂度O(n^2)

for(int i=0;i<n;i++)

for(int j=0;j<i;j++)

分析:T(n)=0+1+...+n-1=n*(n-1)/2

时间复杂度O(n^2)

 for(int i=0;i<n;i++)

for(int j=0;j<i;j+=2013)

分析:T(n)=0+1+0+0+...+2+0+0+...+3+0+...+n-1=n*(n-1)/2

时间复杂度O(n^2)

for(int i=0;i<n;i<<=1)

for(int j=0;j<i;j++)

分析:T(n)=1+2+4+...2^(log(n-1))

时间复杂度O(2^log(n-1))=O(n)

 for(int i=0;i<n;i++)

for(int j=1;j<i;j+=j)

T(n)=0+0+1+2*2+3*4+4*8+...=\sum _{k=0...log(n)}\left ( k*2^{k-1}\right )

时间复杂度O(n*log(n))

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值