算法复杂度分为时间复杂度和空间复杂度,是衡量一个算法优劣的标准。 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
时间复杂度:参考https://blog.csdn.net/qq_41523096/article/details/82142747理解时间复杂度概念,一个算法所需要的时间其实需要机器衡量,但可以先通过人工预测,因此有了时间复杂度这个概念。
常见的时间复杂度量级有:
常数阶O(1)
对数阶O(logN)
线性阶O(n)
线性对数阶O(nlogN)
平方阶O(n²)
立方阶O(n³)
K次方阶O(n^k)
指数阶(2^n)
上面从上至下依次的时间复杂度越来越大,执行的效率越来越低。
空间复杂度:是对一个算法在运行过程中临时占用得存储空间大小的量度。一个算法在计算机存储器上所占用的存储空间,包括程序本身所占空间、输入数据所占空间和辅助变量所占空间三个方面。参考https://www.cnblogs.com/zang1998/p/11552931.html。
对于递归算法来说,代码一般都比较简短,算法本身所占用的存储空间较少,但运行时需要占用较多的临时工作单元。
若写成非递归算法,代码一般可能比较长,算法本身占用的存储空间较多,但运行时将可能需要较少的存储单元。
以上知识整理来自参考https://blog.csdn.net/jsjwk/article/details/84315770