时间复杂度:例题 步骤

时间复杂度是对算法运行时间的抽象度量,但并不是算法的实际运行时间而是执行时间随着数据规模增大而增加的速度。

O(1)<O(logN)<O(n)<O(n^2)<O(n^3)<O(2^n)<O(n!)

1)常数阶

int a =1000;
int b = 20;
int t = 0;
t = a;
a = b;
b = t;

 只要没有循环,时间复杂度就和n没关系,就算有成千上万条这样的语句,任由它们变换,

时间复杂度也是T(n) = O(1); 

2)线性/平方/立方 阶

 计算时间复杂度就是看他的算法算了几次,所以以下面这个为例(我是一个讲解视频

for(int i =0;i < n;i++)
{    cout<<"你又输出了一次“<<endl;
   }

在这个循环算法中,共执行3n+2次,但在计算时间复杂度时,只看最高次项,最高次项的系数看作是1.

 因此平方阶立方阶的时间复杂度计算都同理。

所以O(n) = n^2

所以类似于这种独立互不相关的循环,一般有几层循环就是n的几次方。

还有一种是像这样,i与j 互相有联系的,这种情况下,内层循环次数会根据外层循环变量的改变而改变,它们不再是独立的,时间复杂度取决于内层循环

(本人脑子不好哈,一开始还有点想不明白,为什么这个时候不用乘外面的n了,后来想到一个例子:这里假设循环里n<3

1.小明,小红各有两个球,小红每拿一次球小明就可以拿一次,自己拿自己的互不影响,这是两回事,所以就是排列组合,既两种情况相乘。就是上面的情况。

2.小明和小红各有两个球,小红拿一个的时候小明拿的必须大于等于小红的个数,例如小红0个,小明可以0、1、2个,这时候有几种拿法是取决于小明,就是下面这种情况。​​​​​​​

​​​​​​​)

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

3) 对数型

对数型一般变量以乘的形式增长。

4)指数型 

 

套路都是这样,能看出来的直接写,看不出来的代数进去算

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值