我有一个由n个固定大小的元素(24个字节)组成的数据集。我想创建一个索引,以便能够尽可能快地搜索此数据集中24字节的随机元素。我应该使用什么算法?你知道实现这个的C库吗?
快速读取访问/搜索速度是首要任务。内存使用和插入速度不是问题,初始化后几乎没有写访问权。
编辑:数据集将存储在内存(RAM)中,无需磁盘访问。
答案 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)。如果你能负担得起内存空间,这真的是最快的。