Recursion 写一个递推方程

Recursion 写一个递推方程,recursion,computer-science,recurrence,Recursion,Computer Science,Recurrence,在编写合并排序的递推方程时,我不清楚第二项[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 = le

在编写合并排序的递推方程时,我不清楚第二项[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
任何帮助都将不胜感激。
谢谢

是的,没错。在输入列表的元素之间进行线性迭代,将每个元素分配到左或右子数组中。这就解释了重现期中的Θ(n)项

希望这有帮助