编写递归方程

时间:2015-06-24 00:03:44

标签: recursion computer-science recurrence

我很困惑第二项[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

任何帮助将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

是的,没错。进行线性工作以迭代输入列表的元素,将每个元素分配到左或右子阵列。这说明了重复中的Θ(n)项。

希望这有帮助!