【发布时间】:2018-04-05 06:44:06
【问题描述】:
首先,我说我知道主定理的性质,所以问题不在这里。
我需要知道如何使用现有算法确定主定理的值
所以,我需要 T(n)=a*T(n/b) + f(n)。
我知道 a 是递归调用的次数。
我知道 b 是问题的划分大小
但我不知道如何确定 f(n) 是什么
我有一个例子;
这里我们有 a=2; b=2 f(n) = n
a=2 因为我们有 2 次合并函数调用 b=2 因为 j=(k+i)/2
但我不明白我们如何得到 f(n)=n
合并排序(T,i,k)
需要T数组
i,k 整数,使得 Tm
确保 T 在 i 和 k 之间排序
`if (k>i) then
j=(k+i)/2;
mergeSort(T,i,j);
mergeSort(T,j+1,k);
append(T,i,j,k);`
感谢您的帮助。
【问题讨论】:
-
1) 不确定最后一次调用是否应该调用
append,2)f(n)将是append的时间函数,即O(j - i)或O(k - j)
标签: algorithm big-o master-theorem