【问题标题】:Big O calculation for two data structures两种数据结构的大 O 计算
【发布时间】:2012-03-10 14:18:03
【问题描述】:

如果我有两个数据结构链接在一起(例如,链表的每个节点都包含一个 AVL 树),那么当 搜索 一个 数据项时,Big O 效率会提高是

  • O(N) + O(logN) = O(N),使用效率最低的操作(链表搜索) 或
  • O(N) * O(logN) = O(NlogN)?

提前致谢

【问题讨论】:

    标签: big-o


    【解决方案1】:

    让我明白你想问什么。

    你是说在有每个节点的链表中,如果每个节点都有一个avl树的结构,那么时间复杂度是多少。

    显然是O(nlogn)........

    【讨论】:

    • 这不是枚举结构中所有节点的时间复杂度吗?如果我只是在搜索一个项目(如果我新它属于链表的哪个节点),那么它不会是 O(N) 吗?感谢您的帮助
    • 我认为它是 O(NlogN)。但是您没有提到链表是升序或降序的...通常链表不会具有排序顺序的属性。如果它是二叉搜索树或avl树,它将具有最大堆最小堆的明确结构。但链表不会具有该属性。我鼓励讨论。
    • 你提到的avl树只会服从作为链表节点之一的树的根。所以链表的每个节点都维护avl树。所以如果有n个节点在链表中,我们有 n 个 avl 树。但是我们不知道搜索到的项目到底在哪里可用。所以 O(nlogn)
    • 如果您认为我的回答给了您合理的答案,那么您可以通过点击我的回答的增加点来宣传我的回答。
    • 好的,抱歉我的解释含糊不清,我再试一次——我的链表是有序的,所以 O(N) 的搜索效率。每个节点都包含一个 AVL/二叉树,因此 O(logN) 的搜索效率。当我搜索特定项目并且我知道要搜索的链表的哪个节点时,它不是 O(N) + O(logN) = O(N) 吗?我想如果我正在搜索每个链表节点的 AVL 树,那么由于嵌套搜索操作,它将是 O(N) * O(logN) = O(NlogN) 。再次感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多