c中的快速二进制搜索/索引

时间:2014-02-02 17:40:35

标签: c performance algorithm

我有一个由n个固定大小的元素(24个字节)组成的数据集。我想创建一个索引,以便能够尽可能快地搜索此数据集中24字节的随机元素。我应该使用什么算法?你知道实现这个的C库吗?

快速读取访问/搜索速度是首要任务。内存使用和插入速度不是问题,初始化后几乎没有写访问权。

编辑:数据集将存储在内存(RAM)中,无需磁盘访问。

2 个答案:

答案 0 :(得分:2)

如果元素之间存在逻辑顺序,那么quick sort数据是订购数据的快捷方式。订购后,您可以使用binary search算法查找元素。这是一个O(log N)搜索,你很难得到任何更快的东西!

std::sort可用于对数据进行排序,std::binary_search可用于搜索数据。

答案 1 :(得分:1)

使用哈希表,在STL中以std::unordered_map的形式提供。将打败二元搜索(我的赌注)。

或者,(压缩的)特里(http://en.wikipedia.org/wiki/Trie)。如果你能负担得起内存空间,这真的是最快的。