Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Algorithm 确定程序的总体空间复杂度_Algorithm - Fatal编程技术网

Algorithm 确定程序的总体空间复杂度

Algorithm 确定程序的总体空间复杂度,algorithm,Algorithm,在一个程序中,我使用两种数据结构 1:大小为k的指针数组,每个指针指向一个链接列表(因此,总的“k”列表)。所有列表中的节点总数=M…(类似于使用单独链接的哈希,k是固定的,M可以变化) 2:另一个大小为M的整数数组(其中M=上面的节点数) 问题是:该项目的总体空间复杂度是多少?是下面这样的吗 第一部分:O(k+M)或仅仅是O(M)…我想两者都是正确的 第二部分:O(2M)或仅仅O(M)…两者都正确吗 总体O(k+M)+O(2M)==>O(最大k+M,2M) 还是仅仅是O(M) 请帮助。O(K+

在一个程序中,我使用两种数据结构

1:大小为k的指针数组,每个指针指向一个链接列表(因此,总的“k”列表)。所有列表中的节点总数=M…(类似于使用单独链接的哈希,k是固定的,M可以变化)

2:另一个大小为M的整数数组(其中M=上面的节点数)
问题是:该项目的总体空间复杂度是多少?是下面这样的吗

第一部分:O(k+M)或仅仅是O(M)…我想两者都是正确的

第二部分:O(2M)或仅仅O(M)…两者都正确吗

总体O(k+M)+O(2M)==>O(最大k+M,2M) 还是仅仅是O(M)

请帮助。

O(K+M)是O(M),如果M总是大于K。因此,最终结果是O(M)

第一部分:O(k+M)不正确,它只是O(M)

第二部分:O(2M)不正确,因为我们不按顺序使用常数,所以正确的是O(M)


总的O(M)+O(M)==>O(M)。

在这两种情况下都是正确的。但是由于
O(k+M)=O(M)
,假设
k
常数,每个人都会使用最简单的符号,即O(M)

对于第二部分,单个数组是O(M)

总的来说,它将是
O(k+M+M)=O(max(k+M,2M))=O(M)
(我们可以“忘记”大O符号中的乘法和加法常数-除非你的时间是常数)

作为提醒,
g(x)=O(f(x))
如果存在
x0
c
,则
x>x0
意味着
g(x)>=c.f(x)