我们有一个大小为n的问题
一种算法可以递归地解决大小为n-1的子问题,并对解决方案进行线性量的工作。
我尝试使用“插入并计算”方法并发现大O是n,线性的,但这似乎不正确。我还能尝试什么?
数学堆栈交换的人可能比我做得更好,但我会尝试一下。
算法的描述不太清楚,所以有两种可能性:
O(n)
时间内运行(技术上是2n
,但忽略常数因素)。n
次执行,每次执行n
个单位的工作= O(n^2)
。显然,每次后续执行的工作量都会减少,这将表现为递归关系解决方案中的大约T(n) = (1/2)n^2
,假设我记得该模式的问题正确。您提到的递归公式如下:
这意味着:
T(n) = kn + k(n-1) + k(n-2) + .. + k,这等于 k * n * (n + 1) / 2。
因此,该算法的复杂度为 O(n2)。