Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 为什么数组中所有元素之和的空间复杂度为O(n)?_Algorithm_Space Complexity - Fatal编程技术网

Algorithm 为什么数组中所有元素之和的空间复杂度为O(n)?

Algorithm 为什么数组中所有元素之和的空间复杂度为O(n)?,algorithm,space-complexity,Algorithm,Space Complexity,下面的算法是数组中所有元素的总和 function sumofnumbers(a[],n) { sum=0 for(i=0 to n) sum=sum+a[i] print(sum) } 有人能帮我做一下算法分析吗。为什么上述算法的空间复杂度为O(n)? 我认为这一定是O(1)。因为我们不考虑在这里有额外的空间。我们使用给定的空间来计算数组中元素的和。例如,在一些排序技术中,我们使用额外的数组来对元素进行排序 根据我的说法 计算空间

下面的算法是数组中所有元素的总和

function sumofnumbers(a[],n)
   {
     sum=0
     for(i=0 to n)
         sum=sum+a[i]
     print(sum)
   }

有人能帮我做一下算法分析吗。为什么上述算法的空间复杂度为O(n)? 我认为这一定是O(1)。因为我们不考虑在这里有额外的空间。我们使用给定的空间来计算数组中元素的和。例如,在一些排序技术中,我们使用额外的数组来对元素进行排序

根据我的说法

计算空间复杂度的公式:

 Space complexity = Input size + Auxillary space 
每个算法都包含它所需的/自己的输入大小,即程序执行所需的任何空间。因此,我们只需要考虑程序所需的额外空间(辅助空间),而不是输入大小来计算空间复杂度。 所以我应用了这个概念,是真的吗

什么时候考虑参数(即输入大小和辅助空间)来计算空间复杂度?因为在一些例子中,比如线性搜索,我看到他们有时不使用输入大小


谢谢我相信你是对的。空间复杂度不随N值的增加而变化,因此O(1)。
引用

是的,在我看来像是O(N)时间和O(1)空间。空间是O(N),因为它需要保存输入。想想图灵机——程序需要扫描写在磁带上的整个输入。@wcochran:听起来像时间复杂性谁说这是线性空间?空间复杂性是指图灵机辅助功能区的复杂性。考虑到输入的大小意味着您永远无法实现次线性空间的复杂性,例如LOGSPACE。@Jean BaptisteYunès您是对的。空间复杂度不考虑输入大小作为处理输入所需的内存的一部分。我认为你是对的,但你的参考资料似乎是说
O(n)