[英]Time Complexity of Recursive Algorithm Array
我有一个类似的递归算法,它计算数组中的最小整数。
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(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
的最后一个条目并进行比较)在单位成本方面花费的时间都是固定的。 该算法可以理解为“ 分而治之”,其中除法部分将数组分为前缀和最后一项; 在这里,作为比较的征服部分所花费的时间不能超过恒定时间。 总体而言,不存在递归调用后存在线性工作的情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.