`
xitong
  • 浏览: 6202745 次
文章分类
社区版块
存档分类
最新评论

算法的空间复杂度解释

 
阅读更多
根据算法在执行过程中对存储空间的分配方式可以把存储空间分为两种:静态空间与动态空间。
静态空间主要包括存放程序代码的空间(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)。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics