时间复杂度分析
大O复杂度表示法
大O时间复杂度实际上并不具体表示代码真正的执行时间,而是表示算法的执行时间随数据规模增长的变化趋势
,所以,也叫作渐进时间复杂度(asymptotic time complexity),简称时间复杂度。
表示:
例如:,其中
大O复杂度表示法,就是代码执行的次数
,三个比较实用的方法:
- 只关注循环执行次数最多的一段代码
- 加法法则:总复杂度等于量级最大的那段代码的复杂度
多段代码组成的代码的分析 - 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
循环内的方法调用
常见的复杂度量级
1. 多项式时间复杂度
常量阶
对数阶
线性阶
线性对数阶 比如:归并排序、快速排序
平方阶 ,立方阶 ,...,k次方阶
2. 指数型时间复杂度
指数阶
阶乘阶
对数知识
,所以通常省略底数,计作
图片发自:极客时间《数据结构与算法》王争空间复杂度分析
全称渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。
就是看程序申请的内存空间与数据规模n的关系。
常见的空间复杂度就是、、。
内容总结自:
极客时间:《数据结构与算法》王争
网友评论