时间复杂度



时间复杂度分析:只保留高阶项   舍弃系数

常用的时间复杂度:

常数型 O(1)    线性型 O(n)    平方型 O(n2)    立方型 O(n3)

指数型O(2n)   对数型O(log2n)      二维型O(nlog2n)

 

for(inti=1;i<=n;i++)

{for(intj=1;j<=n;j++)

   {c[i][j]=0;}

for循环中:表达式1执行1,表达式2每次都执行,表达式3每次都执行

      对于此代码,我们先逐句分析:

      1for循环:i1n共执行n

   2for循环:i=1,j1n执行n;i=2,j1n执行n;i=3,j1n执行n;..i=n,j1n执行n

      即第2for循环的执行次数是第1for循环执行次数的n

   计算:O(f(n))=(1+n+n)+n*(1+n+n)+(n*n)=3n^2+3n+1

O(f(n))=O(n*n) 

 

 

      {++x,s+=x;}//O(n)=1

 

      for(inti=1;i<=n;++i)//O(n)=n

      {++x,s+=x;}

      1n进行循环,语句共执行2n

 

      for(inti=1;i<=n;++i)//O(n)=n*n

     for(intj=1;j<=n;++j)

      {++x,s+=x;}

 

      for(inti=2;i<=n;++i)//O(n)=n*n

     for(intj=2;j<=i-1;++j)

      {++x,a[i,j]=x;}

      n=2,执行0;n=3,执行2*1

   n=4,执行2*2;...n=n,执行2*(n-2)

      2*(0+1+2+..+(n-2))=2*((n-2)*(n-1)/2)=n*n

 

int Fun(intn)

{

      if(n<=1)//边界条件

      {return0;}

      returnFun(n-1)+1;//O(n)

      //n,n-1,n-2,n-3...     反过来看0,1,2,3...n

      returnFun(n-2)+n;//O(n)

      //n,n-2,n-4,n-6...      反过来看0,2,4,6...n

      returnFun(n-3)+1;//O(n)

      //n,n-3,n-6,n-9...      反过来看0,3,6,9...n

      returnFun(n/2)+1;//O(log2(n))

      //n,n/2,n/4,n/8...    反过来看1,2,4,8,16...2x=n    x=log2n

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值