Algorithm 在中从外部进行迭代的时间成本

Algorithm 在中从外部进行迭代的时间成本,algorithm,time-complexity,Algorithm,Time Complexity,这是一个非常基本的问题,但下面是: 如果我有一个数组,在i1=0上有一个指针,在i2=array.length-1上有另一个指针——代码如下所示: until i1 >= i2 #search the array between indices i1 to i2 (inclusive) i1 += 1 i2 -= 1 end 这里的时间复杂度是多少?我知道N个元素被触摸,然后N-2个元素被触摸,然后N-4。。等等,所以时间复杂度是N+(N-2)+(N-4)。。。。等等,对

这是一个非常基本的问题,但下面是:

如果我有一个数组,在i1=0上有一个指针,在i2=array.length-1上有另一个指针——代码如下所示:

until i1 >= i2
  #search the array between indices i1 to i2 (inclusive)
  i1 += 1 
  i2 -= 1 
end

这里的时间复杂度是多少?我知道N个元素被触摸,然后N-2个元素被触摸,然后N-4。。等等,所以时间复杂度是N+(N-2)+(N-4)。。。。等等,对吗?如果是这样,用大O表示法求和的结果是什么?

我认为算法实际上仍然是
O(N^2)
。它大约迭代了
N/2次。什么是
#在索引i1到i2(包括)之间搜索数组
是否再次递归调用自身?正确<代码>N+(N-2)+(N-4).
形成算术级数。在此序列中查找多个元素。然后使用一个公式来计算序列中第一个
K
元素的和。@bureaquete我的意思是我在迭代它们之间的所有元素。基本上把注释放在那里,表示I1和I2之间的每个元素在每次迭代中都被触摸一次。我不明白,为什么你在中间又重复了相同的值的多次迭代?在
i1=0
i2=length-1
的第一步中,应该足以检查所有的值,递归调用函数不是更好吗,那么您就有了O(n),当前有了O(n^2)