【问题标题】:What data structure supports fast insertion, deletion and search什么数据结构支持快速插入、删除和搜索
【发布时间】:2013-07-15 05:54:23
【问题描述】:

我觉得这必须存在,但我就是想不出来。有没有一种数据结构可以保存一个排序的值列表并快速搜索(可能像数组一样的 log(N) 时间),并且还支持在 log(N) 或恒定时间内插入和删除元素?

【问题讨论】:

  • 您没有说是哪种语言,但是排序链表使用二分搜索算法(也用于插入和删除)完成所有这些操作。
  • @kevinsa5,我的理解是链表不支持二分查找,因为它不支持常量时间查找,只支持 O(N) 查找。如果我错了,请纠正我。这也是一个与语言无关的问题,我想这样的数据结构应该可以用任何合理的语言实现。
  • 二叉树,然后呢?不是恒定时间,而是 O(log(n))。

标签: search data-structures


【解决方案1】:

这几乎是对平衡二叉搜索树的描述,它按排序顺序存储元素,允许 O(log n) 插入、删除和查找,并允许 O(n) 遍历所有元素。

有很多方法可以构建平衡的 BST - 有红/黑树、AVL 树、替罪羊树、splay 树、AA 树、treaps、(a, b)-trees 等。任何这些都可以解决您的问题问题。其中,展开树可能是最容易编码的,其次是 AA 树和 AVL 树。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2015-11-10
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2021-09-22
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多