在范围列表上执行查找

时间:2012-11-13 19:19:26

标签: algorithm

我有一个我想要查询的范围列表。范围是有序的,不重叠。

例如:

1-10, 11-17, 18-20, 21-30, 等...

目前我使用修改后的二进制搜索。但是我现在有了一个新的列表......除了不重叠的范围之外,新的列表,范围现在可以进行位掩码。

例如:

0-255, 256-287, 288-303, 等...

有几千个范围,最终约为500,000

我将在c中实现这一点,但语言并不重要。我只是在寻找有关如何利用这个新属性的一些想法。有没有人见过这个/读过它?如果有人有任何想法,他们将是最受欢迎的。 :)

1 个答案:

答案 0 :(得分:0)

如何保持大小为500000的位向量?这将需要大约61kb。

然后,您可以通过执行AND来查询数字是否在O(1)的范围内。您还可以同时查询多个值。此外,设置范围位向量将非常快,因为您不需要排序。