Algorithm 对数组和大O表示法求和

Algorithm 对数组和大O表示法求和,algorithm,sum,big-o,Algorithm,Sum,Big O,如何找到一种算法来计算数组中的和值 是这样的吗 Algorithm Array Sum Input: nonnegative integer N, and array A[1],A[2],...,A[N] Output: sum of the N integers in array A Algorith Body: j:=1 sum:=0 while j<N sum := sum + a[J] j:=j+1 end while end Algorithm Arr

如何找到一种算法来计算数组中的和值

是这样的吗

Algorithm Array Sum
Input: nonnegative integer N, and array A[1],A[2],...,A[N]
Output: sum of the N integers in array A
Algorith Body:
j:=1
sum:=0
while j<N
      sum := sum + a[J]
      j:=j+1
  end while
end Algorithm Array Sum
算法数组和
输入:非负整数N和数组A[1],A[2],…,A[N]
输出:数组A中N个整数的和
算法体:
j:=1
总和:=0

而j因为n是数组的大小,你所要做的就是从开始到结束迭代,大O符号是O[n]

integer N= Size_array;
array a[N]
j=1 
sum=0
while j<=N 
 sum += a[j]  
 j++
end while
整数N=Size\u数组;
数组a[N]
j=1
总和=0

当j时,我想你的意思是“当j时,问题是找到所有值的和,因此迭代数组中的每个元素,并将每个元素添加到临时和值中

temp_sum = 0
for i in 1 ...array.length
    temp_sum = temp_sum + array[i]
由于需要遍历数组中的所有元素,此程序与元素的数量成线性关系。如果有10个元素,则迭代10个元素,如果有一百万个元素,则除了遍历所有一百万个元素并添加每个元素之外别无选择。因此时间复杂度为Θ(n)

如果你正在寻找所有元素的总和,而你对数据一无所知,那么你需要至少查看所有元素一次。因此n是下限。你也不需要多次查看元素。n也是上限。因此复杂性为Θ(n)


然而,如果你知道一些关于元素的知识,比如说你得到了n个自然数的序列,你可以用n(n+1)在恒定时间内完成/2.如果您得到的数据是随机的,那么您别无选择,只能执行上述线性时间算法。

要计算此算法的O,您需要计算每行代码的执行次数。稍后,您将只计算基本操作,但从计算所有操作开始

那么j:=1行将运行多少次?sum:=0将运行多少次? while循环的条件将执行多少次?while循环中的语句


把这些加起来。你会注意到你得到的值类似于1+1+n+n+n=2+3n。因此你可以得出结论,它是n上的一个线性函数。

你必须从