具有O(1)查找速度的区间搜索算法

时间:2015-05-07 19:30:40

标签: algorithm

我需要设计一个适用于64位密钥的区间搜索算法。匹配是当密钥k在k1和k2之间时。一个重要的要求是查找速度优于O(log n)。研究现有文献并没有比区间搜索树更好。我想知道它是否可行。

2 个答案:

答案 0 :(得分:1)

如果你的钥匙有分布,关闭到统一,你可以使用 Interpolation search,其时间为O(log log N) - 这比O(log n)好得多。

UPD:只是一个想法: 如果你有足够的额外内存,你可以构建类似于trie的结构。将有O(1)搜索时间。想法如下:例如,让我们设置数组树[256],其中每个数组都由键的某个字节索引。链接到trie的数组。因此,trie的根元素是数组[265],其中index是键的高字节。但无论如何这是不实际的,因为在底部节点中,对于搜索边界,需要执行~64次迭代的线性搜索。

答案 1 :(得分:1)

您可以按引导字节进行分派,直到问题很小。这样可以避免区间树的大部分开销,同时保持区间树的灵活性。

所以你有一个包含256个结构的表,只要你需要一个标记说“#34;没有匹配"”,或者指向一个小间隔树完全匹配的条件。通过简单的跳转处理这棵树的顶部,而不是遍历多次比较,可能的管道停顿等,对您来说可能是一项显着的性能改进。