是否有允许快速合并的地图数据结构?

时间:2009-06-03 23:52:15

标签: data-structures merge binary-tree big-o

是否存在至少O(log n)插入,删除,访问和合并的地图数据结构?

self-balancing binary treesAVL trees等大多数red-black trees拥有大部分属性,但我相信它们已合并O(n log n)。有没有更快合并的数据结构?

编辑:我环顾四周,找不到这样的东西。如果没有这样的数据结构,我很想知道为什么这是不可能的。

2 个答案:

答案 0 :(得分:1)

我会看一下树木。你可能最终会支付合并成本,但你应该能够注入另一棵树并将成本降低,直到以后。

答案 1 :(得分:1)

您是否需要一个树只用于定义比较的任意键类型,或者它是否可以用于具有固定大小二进制表示的类型(int,long,float,double,... )?如果是后一种情况,那么二进制基数树是一种非常有效的合并的数据结构(如果幸运的话,O(1),O(N)最坏的情况)。

有关数据结构的详细信息,请参阅Chris Okasaki和Andrew Gill的Fast Mergeable Integer Maps

Scala Collections Library包含intslongs的实现。所有其他java原语类型都可以转换为int或long,例如:通过使用java.lang.Double.doubleToLongBits for Double。