算法时间复杂度分析(2)

常见的复杂度分析

没有数据规模的变化

存在一个循环,循环的次数和n相关

Cn次,可能c不是大于1的数

存在一个双重循环,都与n有关

反例:

分析循环复杂度的时候,我们要看循环的起始点,终始点,最关键的是每次增量的变化:

验证自己程序复杂度的方法

方式1:

可以在这个基础上降一个数量级,比如程序在1s内可以执行1000规模内的数据,大致是O(n^2):

但是这种方式可能会受到前面常数项的影响

 

方式2:

测试

运行结果:

从结果可知,当数据规模乘上2,那么消耗的时间也乘上2,说明复杂度是0(n)

从结果可知,当数据规模乘上2,那么消耗的时间也乘上4,说明复杂度是0(n^2)

特点:随着数据规模的增加,时间增加的倍数一直在减少

数据规模每扩大两倍,时间基本扩大两倍多一点点

O(n)和O(nlogn)差距差不多

递归算法的复杂度分析

递归的深度是logn,每层处理元素为n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值