【问题标题】:Finding the order of growth of a procedure that calls many procedures查找调用多个过程的过程的增长顺序
【发布时间】:2016-01-23 06:49:42
【问题描述】:

此代码创建一个平衡二叉搜索树,它是两个平衡二叉搜索树的交集。

(define (intersection-tree t1 t2)
    (list->tree (intersection-set (tree->list-2 t1) (tree->list-2 t2))))
  • tree->list-2 将树扁平化为有序集合。它需要 Theta(N)。
  • intersection-settakes 两个集合并使用两个输入集合的交集创建一个新集合。它需要 Theta(N)。
  • list->tree 将新创建的集合变成平衡的二叉搜索树。取 Theta(N)。

也就是说,我有一个过程调用 4 个采用 Theta(N) 的过程(list->tree、intersection-set、两个 tree->lists)。我的猜测是所有这些都需要 4N。忽略常数因子,它变为 Theta(N)。说交叉树过程需要 Theta(N) 是否正确?

【问题讨论】:

    标签: scheme lisp big-o sicp


    【解决方案1】:

    您的猜测是正确的,因为在您的函数中,每个子任务只执行一次,使用 Theta(N),持续次数恒定,交集树过程采用 Theta(N)。

    【讨论】:

      猜你喜欢
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多