时间复杂度和空间复杂性,如何解释空间复杂性

时间:2016-10-13 00:07:03

标签: algorithm time big-o complexity-theory space

对于MakeMatrix,显示T(n)为O(n)且S(n)为O(n ^ 2),其创建方阵并仅将对角线元素设置为零。 (无视malloc的时间)

MakeMatrix(size):

A = malloc(size * size * sizeof(int))
for i from 0 to size -1
A[i,i] =0
return A

我想我明白为什么T(n)是线性O(n),因为只有1个for循环,但为什么空间复杂度为O(n ^ 2)?

2 个答案:

答案 0 :(得分:0)

您分配size * size * sizeof(int)。在我看来,尺寸*大小使空间复杂度n^2变得非常明显。空间复杂性意味着您需要多少内存,具体取决于输入的大小。这是size * size

答案 1 :(得分:0)

n 大小矩阵中元素的数量为 n 2

如果int的大小是4个字节,那么在malloc调用中,您将划出 size * size * 4 个字节。因此,空间要求是二次的。

即使您只迭代 size 元素(即仅对角元素),但您已为所有 size 2 元素。