Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这个项目的空间复杂度是多少? 这只是一个用于计算空间复杂度的测试函数,如果我们考虑 堆栈帧的数量比o(n)要多,但是for循环中的数组a和b以及在每次递归调用中也会占用一些内存的二维数组呢?我的教授告诉我们,空间复杂度是堆栈帧的大小,但它也会在for循环中消耗一些空间 我应该同时考虑这是栈帧和两个数组和2-D数组还是给它们中的任何一个优先级?为什么?_C_Algorithm - Fatal编程技术网

C 这个项目的空间复杂度是多少? 这只是一个用于计算空间复杂度的测试函数,如果我们考虑 堆栈帧的数量比o(n)要多,但是for循环中的数组a和b以及在每次递归调用中也会占用一些内存的二维数组呢?我的教授告诉我们,空间复杂度是堆栈帧的大小,但它也会在for循环中消耗一些空间 我应该同时考虑这是栈帧和两个数组和2-D数组还是给它们中的任何一个优先级?为什么?

C 这个项目的空间复杂度是多少? 这只是一个用于计算空间复杂度的测试函数,如果我们考虑 堆栈帧的数量比o(n)要多,但是for循环中的数组a和b以及在每次递归调用中也会占用一些内存的二维数组呢?我的教授告诉我们,空间复杂度是堆栈帧的大小,但它也会在for循环中消耗一些空间 我应该同时考虑这是栈帧和两个数组和2-D数组还是给它们中的任何一个优先级?为什么?,c,algorithm,C,Algorithm,我只关注空间的复杂性,所以忘记结果或垃圾收集 testfun(n){ 如果(n==0) 返回; INTC[10][10]; int*a=malloc(sizeof(int)*n); int*b=malloc(sizeof(int)*n); 对于(int i=0;i上述程序的空间复杂度为O(n^2)。 这是因为a和b的大小为n,因此它们的空间复杂度均为O(2n),即O(n)。 现在递归简单地从n到1,每个递归调用消耗O(n)空间。因此空间复杂度将是O(n^2)。问题的空间复杂度是O(n)如果在调用

我只关注空间的复杂性,所以忘记结果或垃圾收集

testfun(n){
如果(n==0)
返回;
INTC[10][10];
int*a=malloc(sizeof(int)*n);
int*b=malloc(sizeof(int)*n);

对于(int i=0;i上述程序的空间复杂度为
O(n^2)。
这是因为
a和b
的大小为n,因此它们的空间复杂度均为
O(2n)
,即
O(n)

现在递归简单地从
n到1
,每个递归调用消耗
O(n)
空间。因此空间复杂度将是
O(n^2)。
问题的空间复杂度是O(n)如果在调用函数之前释放了内存位置,因为每次调用函数都需要记住堆栈变量

free(a);
free(b);
test(n - 1);
在每个函数调用中,函数分配O(n)空间,在后续递归调用中也是如此。因此,空间复杂度为O(n^2)。

使用替代法:


使用(1)、(2)、(3)




因此,空间复杂度为O(n^2)。

您可能会想到
free
函数。但是,递归发生在see
free
函数之前。因此,在函数的每次调用中,取决于输入值(
i
),分配的空间大小为
2i
。当停止时间为
n==0
时,总空间复杂度为
sum{i=1}{n}2*i=2*n(n+1)/2=\Theta(n^2)
上述程序的空间复杂度为
O(n^2)+O(n)
O(n^2)
对于二维矩阵和
O(n)

对于一维数组

现在我修改了空间复杂度是多少的问题?@Alishachaudhary空间复杂度不会改变,因为
c
只包含10×10个元素,这只是一个常数O(1).您是否想这样说来总结一下,递归算法的空间复杂度与生成的递归树的最大深度成正比。如果递归算法的每个函数调用占用O(m)空间,并且如果递归树的最大深度为“n”,则递归算法的空间复杂度将为O(nm)。
free(a);
free(b);
test(n - 1);
S(0) = 0
S(n) = S(n - 1) + 2n                 -------- (1)
S(n - 1) = S(n - 2) + 2 (n - 1)      -------- (2)
S(n - 2) = S(n - 3) + 2 (n - 2)      -------- (3)
S(n) = S(n - 1) + 2n
S(n) = S(n - 2) + 2 (n - 1) + 2n
S(n) = S(n - 3) + 2(n - 2) + 2(n - 1) + 2n
 .
 .
 .
 .
S(n) = S(n - k) + 2(n - (k - 1)) + ... + 2n

Let k = n

S(n) = S(n - n) + 2(1) + 2(2) + ... 2(n)
S(n) = S(0) + 2(n * (n + 1)) / 2
S(n) = 0 + n^2 + n