Hash 哈希表-插入、搜索和删除的复杂性
有人给了我两个关于哈希表复杂性的家庭作业问题,但我很难理解它们之间的区别 详情如下: 考虑一个散列函数,它接受n个输入并将它们映射到一个大小为m的表Hash 哈希表-插入、搜索和删除的复杂性,hash,hashtable,big-o,Hash,Hashtable,Big O,有人给了我两个关于哈希表复杂性的家庭作业问题,但我很难理解它们之间的区别 详情如下: 考虑一个散列函数,它接受n个输入并将它们映射到一个大小为m的表 编写哈希函数的插入、搜索和删除的复杂性,该函数将所有n个输入均匀分布在哈希表的各个存储桶上 将插入、搜索和删除的复杂性写入(假定完美但不现实)哈希函数,该函数永远不会将两个项放在同一个bucket中,即该哈希函数永远不会导致冲突 这两个问题似乎与我非常相似,我不确定它们的区别 对于问题1,由于n个输入是均匀分布的,我们可以假设每个存储桶中有零个或一
但是搜索呢?这将是O(1)+搜索链接列表的成本。但我们不知道它的大小,只知道它分布均匀。我们能用n(输入数量)和m(表格大小)来表示长度吗?您的编辑是正确的 我们能用n(输入数量)和m(表格大小)来表示长度吗 对于1,如果哈希表大小以某种方式被禁止,这意味着负载因子(即每个存储桶的项目数)n/m大于1,并且不是常数,也不在常数范围内,那么您可以假设一个关系m=f(n),那么负载因子将是n/f(n),因此复杂性也将是O(n/f(n))
在第二种情况下,复杂性始终为O(1)。您的编辑是正确的 我们能用n(输入数量)和m(表格大小)来表示长度吗 对于1,如果哈希表大小以某种方式被禁止,这意味着负载因子(即每个存储桶的项目数)n/m大于1,并且不是常数,也不在常数范围内,那么您可以假设一个关系m=f(n),那么负载因子将是n/f(n),因此复杂性也将是O(n/f(n)) 在第二种情况下,复杂度总是O(1)