具有间隙搜索和附加的有序序列的最有效数据结构是什么?

时间:2013-03-10 14:34:34

标签: algorithm data-structures

我需要存储一组有序整数,这些整数可以形成如下所示的序列

1,2,3,15,16,20,21,25,26,27,28

它也可以表示为

1-3,15-16,20-21,25-28

我不需要排序序列我只需要能够添加整数并知道 set 中是否有某个整数。

我正在寻找在插入和搜索方面快速O(lg(n))O(n*lg(n))的数据结构。是整数集合中的X,它可以处理并发读写,如果可能的话,可以写入没有锁定和没有持久性的写入。

对于相同的插入和搜索时间,将选择更节省空间的解决方案。

二进制搜索树,但它不够好,因为由于整数以不断增长的升序顺序插入,生成的树看起来不太好,所以我想我需要一个多元自平衡树。

没有重复。

只需要参考说明就可以完成这项工作。

背景:这是针对mvcc数据库,每个事务都有一个事务ID,在订购时应该是唯一的,即。对于两个T1(t1),T2(t2),id(T1)< ID(T2)。差距来自于事务未提交其事务ID丢失的事实。事务ID用于注释数据版本,知道是否应该考虑数据的版本以及如何,至少必须知道它是否已经提交,我必须维护一个提交事务的列表,一个汉堡的哈希映射可以做完美的POC工作,但从长远来看。我不知道专业人士如何做到这一点......

类似的问题可能有点误导:Finding a gap in an ordered range of adjacent numbers

1 个答案:

答案 0 :(得分:2)

我建议使用interval tree - 这是一个修改后的二进制搜索树,用于压缩间隔。可以通过使用自平衡变体来处理有序插入的问题。可以通过锁定或实现persistent版本来实现并发支持。