【问题标题】:big O of two nested binary search trees两个嵌套二叉搜索树的大 O
【发布时间】:2022-07-08 16:42:19
【问题描述】:

我需要计算算法的大 O。

它包含两个嵌套的for,每个都有二叉搜索树。 二叉搜索树的复杂度是O(log n)

如何计算算法的正确复杂度?

是 O(log(n)log(m)) 还是 O(log(nm)) ?

【问题讨论】:

  • 这能回答你的问题吗? Big O, how do you calculate/approximate it?
  • "二叉搜索树的复杂度是O(log n)":不,二叉搜索树是一个数据结构,而不是一个算法。算法有时间复杂度,数据结构没有。如果没有用至少一种正式的语言看到你的算法,就不可能回答你的问题。

标签: algorithm time-complexity binary-tree binary-search-tree complexity-theory


【解决方案1】:

如你所说,二分查找的复杂度为 O(log n)。您可以将 log(n) 想象为算法所需的(最大)步数。对于这些步骤中的每一个,您的算法都会执行嵌套的二进制搜索。这意味着,您可以将其想象为 log(n) 乘以 log(m) 步。

所以你是正确的 O(log(n) x log(m))。

如果例如 n 大于 m,那么你有 O((log(n))^2)。

但通常我们不会区分不同的输入。我们将它们一起视为大小为 n 的“唯一”输入。那么你的复杂度就是 O((log(n))^2)。

不区分不同的输入至少对多项式算法有意义。要查看这一点,请考虑一个示例:您有两个大小为 n 和 m 的输入,其中 m

  • O(n+m)
  • O(log(n+m))
  • O((n+m)^2) = O(n^2+2nm+m^2)

【讨论】:

    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2023-03-08
    相关资源
    最近更新 更多