是否存在至少O(log n)
插入,删除,访问和合并的地图数据结构?
self-balancing binary trees和AVL trees等大多数red-black trees拥有大部分属性,但我相信它们已合并O(n log n)
。有没有更快合并的数据结构?
编辑:我环顾四周,找不到这样的东西。如果没有这样的数据结构,我很想知道为什么这是不可能的。
答案 0 :(得分:1)
我会看一下树木。你可能最终会支付合并成本,但你应该能够注入另一棵树并将成本降低,直到以后。
答案 1 :(得分:1)
您是否需要一个树只用于定义比较的任意键类型,或者它是否可以用于具有固定大小二进制表示的类型(int,long,float,double,... )?如果是后一种情况,那么二进制基数树是一种非常有效的合并的数据结构(如果幸运的话,O(1),O(N)最坏的情况)。
有关数据结构的详细信息,请参阅Chris Okasaki和Andrew Gill的Fast Mergeable Integer Maps。
Scala Collections Library包含ints和longs的实现。所有其他java原语类型都可以转换为int或long,例如:通过使用java.lang.Double.doubleToLongBits for Double。