通过索引快速插入/删除元素的最佳数据结构(容器)是什么?
答案 0 :(得分:1)
取决于你是在谈论内存还是磁盘上的内容。通常,在磁盘上它是B树的一些变体,通常在内存中,它通常是一个链表(如果你知道需要插入什么节点)。
答案 1 :(得分:1)
尝试以固定间隔动态调整大小的哈希表。
假设一个非常好的均匀分布,你应该基本上恒定时间[O(1)]访问时间。
http://www.cs.cornell.edu/courses/cs312/2006fa/lectures/lec14.html
这个链接似乎给出了一个很好的解释。
答案 2 :(得分:1)
您可以使用具有如下节点结构的二叉树获得O(log n)性能:
struct Node<T>
T value
Node left
int left_count
Node right
int right_count
end
left_count
值将保存树的left
分支中的节点数,对于右侧也是如此。查找将通过从树的顶部开始并基于将期望的索引值与左计数和右计数进行比较来向下遍历来执行。插入和删除将使用常规二叉树算法执行,并对计数值进行适当调整。通过要求二叉树平衡,可以实现更一致的性能。
这种树可能有一个名字;更多信息赞赏!