1. 复杂度

 1. 时间复杂度: 估算执行指令的执行次数

 2. 空间复杂度: 估算占用的内存空间

 3. 大O表示法

     大O表示法是一种粗略的估算模型, 公式

     T(n) = O(f(n))

     T(n)表示代码的执行时间;

     n表示数据规模大小;

     f(n)表示每行代码执行的次数和,是一个表达式;

     O表示执行时间T(n)和f(n)表达式成正比

因为时间复杂度是表示的一种趋势,所以常常忽略常量、低阶、系数,只需要最大阶量级就可以了。

分析时间复杂度的几个常见法则

1、只关注代码执行最多的一段代码

上面例子可以看出,复杂度忽略了低阶、常量和系数,所以执行最多的那一段最能表达时间复杂度的趋势。

2、加法法则:总复杂度等于各部分求和,然后取复杂度量级最高的

还是上面的例子,总的时间复杂度等于各部分代码时间复杂度的和,求和之后再用最能表达趋势的项来表示整段代码的时间复杂度。

3、乘法法则:嵌套代码复杂度等于嵌套内外代码复杂度的乘积

上面第二段代码,j 循环段嵌套在 i 循环内部,所以 j 循环体内的时间复杂度等于单独 i 的时间复杂度乘以单独 j 的时间复杂度。

常见的时间复杂度表示

常量阶:O(1)

对数阶:O(logn)

线性阶:O(n)

线性对数阶:O(nlogn)

平方阶:O(n²)、立方阶O(n³)……

指数阶:O(2ⁿ)

阶乘阶:O(n!)

 

参考

[1]: 复杂度分析

[2]: 时间与空间复杂度的讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值