我很困惑第二项[T(n)= 2T(n / 2)+ THETA(n) ]的来源是从写入复发时得出的合并排序方程式。
从Coursera类中可以看出,第二个术语是由递归调用之外的内容引起的。所以我的猜测是因为它是2 For For循环,每个都会达到n / 2,因此总数将计入n:
function mergesort(m)
var list left, right
if length(m) ≤ 1
return m
else
middle = length(m) / 2
for each x in m up to middle
add x to left
for each x in m after middle
add x to right
left = mergesort(left)
right = mergesort(right)
result = merge(left, right)
return result
任何帮助将不胜感激。 感谢
答案 0 :(得分:0)
是的,没错。进行线性工作以迭代输入列表的元素,将每个元素分配到左或右子阵列。这说明了重复中的Θ(n)项。
希望这有帮助!