读书人

空间复杂度有关问题

发布时间: 2012-02-12 17:16:33 作者: rapoo

空间复杂度问题
以下是树书上的一个例子:
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)

读书人网 >C++

热点推荐