Data structures 按索引快速插入/删除元素的最佳数据结构(容器)是什么?

Data structures 按索引快速插入/删除元素的最佳数据结构(容器)是什么?,data-structures,Data Structures,按索引快速插入/删除元素的最佳数据结构(容器)是什么?取决于您谈论的是内存还是磁盘中的内容。通常,在磁盘上,它是B-树的某种变体,通常在内存中,它通常是一个链表(如果您知道需要插入哪个节点) 尝试以固定间隔动态调整大小的哈希表 假设有一个相当好的均匀分布,您应该有基本上恒定的时间[O(1)]访问时间 这一联系似乎给出了一个很好的解释 使用具有如下节点结构的二叉树可以获得O(logn)性能: struct Node<T> T value Node left i

按索引快速插入/删除元素的最佳数据结构(容器)是什么?

取决于您谈论的是内存还是磁盘中的内容。通常,在磁盘上,它是B-树的某种变体,通常在内存中,它通常是一个链表(如果您知道需要插入哪个节点)

尝试以固定间隔动态调整大小的哈希表

假设有一个相当好的均匀分布,您应该有基本上恒定的时间[O(1)]访问时间

这一联系似乎给出了一个很好的解释

使用具有如下节点结构的二叉树可以获得O(logn)性能:

struct Node<T>
    T value
    Node left
    int left_count
    Node right
    int right_count
end
struct节点
T值
左节点
int左_计数
节点权
整数右数
结束
left\u count
值将保存树的
left
分支中的节点数,同样地,也保存右侧的节点数。查找将通过从树的顶部开始,并根据所需索引值与左右计数的比较向下遍历来执行。插入和删除将使用正常的二叉树算法执行,并对计数值进行适当调整。通过要求二叉树是平衡的,可以实现更一致的性能


这种树可能有一个名字;更多信息,谢谢

这可能是重复的,我猜你的意思是红黑树红黑树不包含左右子树计数。我已经更新了我的答案-我认为这是一个好的解决方案。链表不好,因为我不知道节点(有“按索引访问”的要求,列表需要O(n)