【发布时间】:2015-06-24 00:03:43
【问题描述】:
在编写递归时,我对第二项 [T(n) = 2T(n/2) + THETA(n)] 的来源感到困惑合并排序的方程。
在 Coursera 课程中,有人说第二项是由于递归调用之外发生的事情。所以我的猜测是因为它是由于 2 个 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
任何帮助将不胜感激。 谢谢
【问题讨论】:
标签: recursion computer-science recurrence