算法复杂度

算法复杂度分为时间复杂度和空间复杂度,是衡量一个算法优劣的标准。 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。

时间复杂度:参考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

原文地址:https://www.cnblogs.com/smallzhen/p/11980355.html