哈希表的复杂度搜索时间是 O(n^2) 还是 O(log n)?



我实现了哈希表,其中由 26 个字母字符表示的键和由数组表示的值对应于每个键,该数组包含所有以相应字符开头的单词。因此,要在该哈希表中搜索特定单词,我应该在键中搜索以查找该单词的第一个字符,一旦它在相应的数组中找到搜索以查找特定单词。是将 O(n^2) 作为特定字符的键搜索并在相应数组中搜索特定单词。还是需要 O(log (n))?

你没有发布任何代码,所以我要做一些假设。你说你有一个包含 26 个键的哈希表(事先知道),所以我假设这是作为 26 个元素的数组最佳实现的,它通过键O(1)访问该数组。然后你说每个元素都有数组,包含以该字母开头的所有元素。作为哈希函数,它相当弱,但它肯定是一个有效的函数。

因此,当我们想要搜索特定值时,我们需要根据第一个字母(需要O(1))查找适当的 bin ,然后在该 bin (O(n)) 中进行线性搜索。所以总的来说,复杂性是O(n)的,再次假设你的顶级哈希表数据结构被有效地实现。

现在,既然你说"第一个字母",我假设你正在对字符串进行操作,这提供了优化的可能性。字符串有一个很好的属性,因为它们可以很容易地排序。因此,如果您确保箱始终按字典顺序排序,则可以使用二叉搜索而不是线性搜索来查找O(log n)。请注意,此更改会使插入功能从(摊销)O(1)变为O(n),因此您应该考虑是否更频繁地插入或搜索。

最新更新