时间复杂度分析的概念就是用来分析算法执行的效率与数据规模之间的增长关系。
空间复杂度分析,表示算法的存储空间与数据规模之间的增长关系。
常见的复杂度并不多,从低阶到高阶有:常量阶O(1)、对数阶O(logn)、线性阶O(n)、线性对数阶O(nlogn)、指数阶O(n的平方)
时间复杂度分析有三种方法:
第一种方法:寻找循环次数最多的一段代码
这段代码执行次数的n的量级就是整段要分析代码的时间复杂度
第二种方法:相加法则
把量级最大的那段代码作为时间复杂度(可以表示为T(n) =O(max(f(n),g(n))))
第三种方法:乘法法则
当嵌套时(可以表示为T(n) = O(f(n)*g(n)) )
最好时间复杂度分析,最坏时间复杂度分析,平均时间复杂度分析,均摊时间复杂度分析
最好时间复杂度分析(可以理解为在最理想的情况下的时间复杂度)
最坏时间复杂度分析(例如在一个数组中寻找已知变量X,遍历整个数组都没有变量X的情况)
平均时间复杂度分析(例如在一个数组中寻找已知变量X,找出所有可能出现的情况和这些情况出现的概率,出现的概率乘以每种情况的时间复杂度之和除以可能出现的几种情况)
均摊时间复杂度分析(可以理解为把最坏情况下的多出的时间复杂度均摊到最好情况下,所以可以理解为时间复杂度为O(1))