300平方别墅装修大约多少钱湖南有实力seo优化哪家好
一个算法的存储量包括形参所占空间和临时变量所占空间等。在对算法进行存储空间分析时,只考察临时变量所占空间,如图1.21所示,其中临时空间为变量i、maxi占用的空间。所以,空间复杂度是对一个算法在运行过程中临时占用的存储空间大小的量度,一般也作为问题规模n的函数,以数量级形式给出,记作:S(n)=O(g(n)),其中,“O”的含义与时间复杂度中的含义相同若所需临时空间相对于输入数据量来说是常数,则称此算法为原地工作或就地工作。若所需临时空间依赖于特定的输入,则通常按最坏情况来考虑。
为什么算法占用的空间只考虑临时空间,而不必考虑形参的空间呢?这是因为形参的空间会在调用该算法的算法中考虑,例如,以下maxfun算法调用图1.21的max算法:
void maxfun()
{ int b[]={1,2,3,4,5},n=5;
printf("Max=%d\n",max(b,n));
}
maxfun算法中为b数组分配了相应的内存空间,其空间复杂度为O(n),如果在max算法中再考虑形参a的空间,这样就重复计算了占用的空间。实际上,在C/C++语言中,maxfun调用max时,max的形参a只是一个指向实参b数组的指针,形参a只分配一个地址大小的空间,并非另外分配5个整型单元的空间。