您的位置:首页 > 理论基础 > 数据结构算法

数据结构_0: 复杂度分析

2015-12-23 00:26 375 查看

时间复杂度原则

加法原则

T(n)=T1(n)+T2(n)=O(f(x))+O(g(n))=O(max(f(n),g(n)))T(n)=T_1(n)+T_2(n)=O(f(x))+O(g(n))=O(max(f(n),g(n)))

乘法原则

T(n)=T1(n)∗T2(n)=O(f(n)∗g(n))=O(f(n)∗g(n))T(n)=T_1(n)*T_2(n)=O(f(n)*g(n))=O(f(n)*g(n))

渐进时间复杂度

O(1)<O(lg2n)<O(n)<O(nlgn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)O(1)

复杂度计算

常数阶

线性阶

//O(n)

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


对数阶

//O(lg2n)
int cnt=1;
while(cnt<=n)
{
cnt=cnt*2;
}


2x=n=>x=log2n2^x=n=>x=log_2n

平方阶

int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{...}


O(n2)O(n^2)

int i,j;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{...}


O(m∗n)O(m*n)

int i,j;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{...}


n+(n−1)+...+1=n(n+1)2n+(n-1)+...+1=\frac {n(n+1)}{2}

1+2+3+...+n=n∗n−121+2+3+...+n=n*\frac{n-1}{2}

12+22+...+n2=n(n+1)(2n+1)61^2+2^2+...+n^2=\frac{n(n+1)(2n+1)}{6}

13+23+...+n3=(n(n+1)2)21^3+2^3+...+n^3=(\frac{n(n+1)}{2})^2

典型算法分析

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: