空间复杂度及常见案例

空间复杂度是衡量程序运行所需内存空间的指标,用大O记法表示。它包括程序代码、输入输出和运行时临时空间三部分。常见空间复杂度有O(1)、O(n)、O(n^2)等,与输入数据量n相关。优化算法应尽量减少临时空间的申请。
摘要由CSDN通过智能技术生成

在数据结构中,用空间复杂度来衡量程序运行所需内存空间的大小,跟时间复杂度类似,它也可以使用大O记法来表示。

  算法的空间复杂度是通过计算算法所需的存储空间实现的,计算公式为:S(n) = O(f(n)),其中n为问题的规模,f(n)则为语句关于问题规模n所占存储空间的函数,随着n的变动,f(n)的增长率越小越好。

  一个算法程序从编译到运行有多个部分涉及存储空间的分配,具体情况如下:

程序代码本身需要占用一部分存储空间,用于存储编译后提供执行的代码,这部分的存储空间主要取决于程序的代码量,因此,为了减少这部分占用的空间,在保证算法的合理性情况下,应该尽量减少代码量。

程序中的输入输出,也需要占用一部分存储空间,这部分的占用的空间主要取决于不同算法的实现逻辑,但是大体上它们的大小都是相差不大的。

程序在运行时,不同情况下需要申请的临时空间,这部分占用的空间是对空间复杂度影响最大的,因为不同的算法实现细节可能存在较大的差异,会申请的空间也会存在比较大的不同。

  一、常见的空间复杂度可以归类为以下的几种情况:

如果算法执行时所需要的空间和算法的输入值无关,对于输入数据量来说是一个常数的话,则称该算法为 原地工作 空间复杂度为O(1)。

如果随着输入数据量 n 的增大,程序申请的临时空间成线性增长,则程序的空间复杂度用 O(n) 表示。

如果随着输入数据量 n 的增大,程序申请的临时空间成 n2 关系增长,则程序的空间复杂度用 O(n2) 表示。

如果随着输入数据量 n 的增大,程序申请的临时空间成 n3 关系增长,则程序的空间复杂度用 O(n3) 表示。

等等(和时间复杂度的推送逻辑类似)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值