首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

空间复杂度有关问题

2012-02-12 
空间复杂度问题以下是树书上的一个例子:floatsum(floata[],constinn){floats0.0for(inti0i ni++)s+

空间复杂度问题
以下是树书上的一个例子:
float   sum(float   a[],const   in   n)
{
        float   s=0.0;
        for(int   i=0;i <n;i++)     s+=a[i];
        return   s;
}
本程序的问题规模为n,在程序中用到一个整数n存放累加个数;还用到一个浮点数作为s存放累加值的存储空间;另外对于数组a[]来说,只耗费了一个空间单元存放第一个元素a[0]的地址。(这个地方我不太明白,为什么只是耗费了一个空间单元存放第一个元素a[0]的地址)因此,此函数所需要的存储空间也为一常数

[解决办法]
该函数的参数float a[]实际上是传递了数组a的首地址,而不是把整个数组a都复制到函数的栈空间。
因此需要空间为sizeof(float*) + sizeof(n) + sizeof(s) + sizeof(i)

热点排行