【问题标题】:Writing a Recurrence Equation写一个递归方程
【发布时间】: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


    【解决方案1】:

    是的,没错。对输入列表的元素进行迭代,将每个元素分配到左子数组或右子数组中,完成了线性工作。这解释了循环中的 Θ(n) 项。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 2012-12-08
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多