<分区>
我想从已排序的单词列表中搜索特定单词。我的单词列表包含 100,000 个单词。 为了提高二分查找算法的性能,我想稍微修改一下。例如,如果我想搜索单词“apple”而不是对整个单词列表应用二进制搜索算法。我只会将它应用于以字母“a”开头的单词。如果我将单词列表加载到数组或 vector 中,我知道我会从索引 0 开始搜索。问题是我不知道以字母“a”开头的单词的最后一个索引是什么。 关于如何知道最后一个索引的任何想法?
<分区>
我想从已排序的单词列表中搜索特定单词。我的单词列表包含 100,000 个单词。 为了提高二分查找算法的性能,我想稍微修改一下。例如,如果我想搜索单词“apple”而不是对整个单词列表应用二进制搜索算法。我只会将它应用于以字母“a”开头的单词。如果我将单词列表加载到数组或 vector 中,我知道我会从索引 0 开始搜索。问题是我不知道以字母“a”开头的单词的最后一个索引是什么。 关于如何知道最后一个索引的任何想法?
最佳答案
我建议您实现 TRIE而不是实现二进制搜索算法。例如:每个字母都是TRIE的节点.构建时间复杂度TRIE是O(W*L)。 W 是字数。 L 是单词的平均长度。当您从 TRIE 中找到单词时它需要 O(L)。
关于c++ - 通过修改二进制搜索算法来改进它,使其在大量单词(单词列表)中搜索单词时工作得更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000290/