算法的空间复杂度解释

根据算法在执行过程中对存储空间的分配方式可以把存储空间分为两种:静态空间与动态空间。
静态空间主要包括存放程序代码的空间(code segment),常数、数组及对象的数据成员等所占的内存空间
(data segment)。
动态存储空间是程序在运行过程中开辟的存储空间,例如链式栈在实现过程中要不断使用new语句创建新结点
,然后再把新结点加入栈中。使用new语句开辟的内存空间在程序运行结束前要调用delete语句进行释放,以
防止内存泄露。(java中局部变量存在栈区(stack),new出来的对象一般存在堆区(heap))


对静态空间进行空间复杂度分析比较简单,只需弄清楚算法在执行过程中使用的所有变量,再利用相应的存
储空间单位计算出程序需要多少静态空间存储这些变量即可。
例如下面的代码
----------------------------------------------------
int a[weight];
for (int i = 0; i < weight; i++)
{
a[i] = i;
}
----------------------------------------------------
程序使用了长度为weight的一维数组存储整数,由于在程序的执行过程中数组a的大小不变,所以数组a存放在静态存储区中。程序的空间复杂度为O(n)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值