您的位置首页百科问答

如何理解算法的空间复杂度?

如何理解算法的空间复杂度?

的有关信息介绍如下:

如何理解算法的空间复杂度?

考虑复杂度的话,“程序本身所占的空间”你可以忽略,因为这是“算法的描述”部分,这部分就是个常量(你的程序代码段写完就固定大小了),算上它也只是加一个常数

“输入数据所占的存储空间”这个其实可以算“需要多少空间”,但不一定是“访问到多少空间”,如果算上这块,那么所有算法的空间复杂度至少是O(N),就像如果你计算读入输入的时间的话,所有算法的时间复杂度至少也是O(N)一样,比如说二分查找,虽然你需要O(N)的空间存储所有数据,但是每次查找只需要O(lgN)次操作和访问,也就是说访问到的空间撑死也就是O(lgN),一个算法的所有操作涉及到的空间的复杂度不会超出其时间复杂度,时间复杂度已经给出了一个上界了,这也是平时不怎么关注空间复杂度的一个原因

第三个“算法执行过程中所需的存储空间”可以认为是算法的额外需要的空间,这个可能有也可能没有,具体算法具体分析了,但就像上面说的,它也不会超出时间复杂度的上界