繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM