根据算法在执行过程中对存储空间的分配方式可以把存储空间分为两种:静态空间与动态空间。
静态空间主要包括存放程序代码的空间(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)。
分享到:
相关推荐
算法 时间复杂度 空间复杂度 经典算法 时间复杂度 空间复杂度 经典算法 时间复杂度 空间复杂度 经典
关于算法时间复杂度的计算 关于算法时间复杂度的计算 关于算法时间复杂度的计算
信息学奥赛算法时间复杂度和空间复杂度计算 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。 时间效率被称为时间复杂度 空间效率被称作空间复杂度
算法复杂度分为时间复杂度和空间复杂度。 其作用: 时间复杂度是指执行算法所需要的计算工作量; 而空间复杂度是指执行这个算法所需要的内存空间。 (算法的复杂性体现在运行该算法时的计算机所需资源的多少上,...
程序员应该掌握的算法复杂度速查表 这个总结非常方便 不仅形象地把各个算法对比开来 也特别利于面试前的复习。
常用排序算法时间复杂度、空间复杂度总结。包括:冒泡排序、快速排序、选择排序、堆排序、插入排序、Shell排序、归并排序、基数排序。
算法设计目标与时间复杂度与空间复杂度.ppt
算法的复杂度与Master定理,介绍了算法的时间复杂度与空间复杂度的计算方法
算法复杂度——时间复杂度和空间复杂度.doc
均值滤波很常见 但一般的算法复杂度都和取值窗口w*h有关 算法复杂度太高 本算法优化了基础的均值滤波算法 算法复杂度大大降低
大小固定,与问题规模无关无论问题规模怎么变,算法运行所需的内存空间都是固定的常量,算法空间复杂度为算法原地工作——算法所需内存空间为常量空间复杂度程序代码内存装
相关知识介绍(所有定义只为帮助读者理解相关概念,并非严格定义)
Python 算法 05空间复杂度.mp4
包含算法复杂度分析的基本知识,包含时间复杂度和空间复杂度分析的基本思路
算法的时间复杂度和空间复杂度-总结.doc
数据结构与算法笔记:时间复杂度和空间复杂度
算法实验代码和报告(时间复杂度、0-1背包问题、分治与贪心、蛮力法)。