1.时间复杂度分析
时间复杂度通常用大O表示法,所有代码的执行时间 T(n) 与每行代码的执行次数 n 成正比,即
它表示代码执行时间随数据规模增长的变化趋势,也叫渐进时间复杂度,简称时间复杂度。
常见时间复杂度量级有O(1),O(log(n)),O(n),O(nlog(n)),O(n2),O(n3),O(2n),O(n!),其中O(2n),O(n!)为非多项式量级,剩余的为多项式量级。
时间复杂度分析法则:
a.只关注循环次数最多的那一段代码
b.总复杂度等于量级最大的那段代码的时间复杂度
c.嵌套代码的复杂度等于嵌套内外代码复杂度的乘积
时间复杂度有最好时间复杂度,最差时间复杂度,平均时间复杂度,均摊时间复杂度,一般用平均时间复杂度来考量。
2.空间复杂度分析
类比时间复杂度,空间复杂度全称渐进空间复杂度,表示空间随数据规模的增长的变化趋势。
常见空间复杂度有O(1),O(n), O(n2)
注意点:空间复杂度指的是操作数据时额外申请的空间,比如一个栈存储了n个数据,但是栈的空间复杂度为O(1),因为进栈出栈时都只操作栈顶元素,只需申请一个临时变量。