Algorithm 递归算法数组的时间复杂度

Algorithm 递归算法数组的时间复杂度,algorithm,performance,math,recursion,time-complexity,Algorithm,Performance,Math,Recursion,Time Complexity,我有一个递归算法,可以计算数组中最小的整数 ALGORITHM F_min1(A[0..n-1]) //Input: An array A[0..n-1] of real numbers If n = 1 return A[0] else temp ← F_minl(A[0..n-2]) If temp ≤ A[n-1] return temp else return A[n-1] 我认为恢复关系应该是什么 T(1) = 1, T(n) = T(n-1) + 1 T(n)=T(n-1)+n

我有一个递归算法,可以计算数组中最小的整数

 ALGORITHM F_min1(A[0..n-1])
//Input: An array A[0..n-1] of real numbers
If n = 1
return A[0]
else
temp ← F_minl(A[0..n-2])
If temp ≤ A[n-1]
return temp
else
return A[n-1]
我认为恢复关系应该是什么

T(1) = 1,
T(n) = T(n-1) + 1
T(n)=T(n-1)+n


但是我不确定
+n
部分。我想确定在哪些情况下复发是
T(n)=T(n-1)+1
,在哪些情况下复发是
T(n)=T(n-1)+n
,复发应该是

T(1) = 1,
T(n) = T(n-1) + 1

因为除了对较小数组的递归调用之外,所有计算工作(读取
A
的最后一个条目并进行比较)在单位成本度量中都需要固定的时间。该算法可以理解为分治算法,其中分治部分将数组拆分为前缀和最后一个条目;征服部分,这是一个比较,不能超过恒定的时间在这里。总的来说,递归调用后存在线性功的情况是不存在的。

它的T(n)=T(n-1)+1,所以它是全局θ(n)。至少乍一看是这样。其中“+1”是一个总括术语,表示一组有限的常数时间运算。非常感谢,我认为在递归之后将有n个比较,所以o(n)。@ayt_cem确实,总共有
n
个比较;但是,每个递归调用中只有一个比较。因此,为了在递归调用之后的每个比较中都是+o(n),应该有n个比较?是的,但只有一个。