c++ - 通过修改二进制搜索算法来改进它,使其在大量单词(单词列表)中搜索单词时工作得更快

标签 c++ algorithm performance search binary-search

<分区>

我想从已排序的单词列表中搜索特定单词。我的单词列表包含 100,000 个单词。 为了提高二分查找算法的性能,我想稍微修改一下。例如,如果我想搜索单词“apple”而不是对整个单词列表应用二进制搜索算法。我只会将它应用于以字母“a”开头的单词。如果我将单词列表加载到数组或 vector 中,我知道我会从索引 0 开始搜索。问题是我不知道以字母“a”开头的单词的最后一个索引是什么。 关于如何知道最后一个索引的任何想法?

最佳答案

我建议您实现 TRIE而不是实现二进制搜索算法。例如:每个字母都是TRIE的节点.构建时间复杂度TRIEO(W*L)W 是字数。 L 是单词的平均长度。当您从 TRIE 中找到单词时它需要 O(L)

关于c++ - 通过修改二进制搜索算法来改进它,使其在大量单词(单词列表)中搜索单词时工作得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000290/

相关文章:

c++ - atoi 没有给出正确的输出

mysql - 使 MySQL 为查询选择最佳索引

java - 如何实现 JOptionpane 列表选项?

c++ - 用 C 或汇编制作一个简单的 CRT0

c++ - 为什么需要虚拟 thunk?

c++ - 按值返回的 const 对象仍然可以移动吗?

algorithm - 给定代码的时间复杂度是多少?

algorithm - 解析类继承算法

python - 有没有更快的方法在一维数组中将 "0"随机交换为 "1"?

sql - 无需加入即可获取员工及其经理的详细信息