|
1
3
不足以知道
在任何情况下,如果将元素的数量限制为已知的
您最好的选择是使用您拥有的散列函数,并让每个bucket都成为冲突项的链接列表。即使哈希不够完美,您仍然可以大大减少所用的时间。
只有当哈希完全不完美时(全部
如果您不提前知道数据,则不可能实现完美的哈希。当然,除非你用
我的建议是使用链表路由进行足够好的散列。我不怀疑你能根据人们名字中字母在整个人群中的相对频率来建立一个更好的哈希函数,但是即使你拥有的哈希(这对于所有具有相同频率的字母都是理想的)也足够了。 而且,不管怎样,如果你开始依赖频率,你会得到来自那些似乎不使用元音的国家(一个波斯尼亚 一 ,最后会发生更多的碰撞。
但要记住,这真的取决于
如果
一个很好的例子:我们有一些代码可以在问题摘要中搜索留下评论的人的名字(这样我们就可以在团队中建立最后一个响应的成员)。我们团队中只有大约10名成员,所以我们只需要对他们进行顺序搜索——使用更快的数据结构来提高性能被认为是太麻烦了。 一 无意冒犯。我只记得很久以前那篇幽默的文章,关于克林顿授权空运元音到波斯尼亚。我相信还有其他国家也有类似的“问题”。 |
|
|
3
0
听起来您正在寻找 perfect hash function 或者甚至是最小的完美散列函数。根据维基百科的网页, CMPH 可以 满足您的需求。免责声明:我从未使用过。 |
|
|
4
0
映射优化算法
|
|
Ben · 统计向量中的单词在字符串中出现的频率 1 年前 |
|
|
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 1 年前 |
|
|
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 1 年前 |
|
|
user764754 · 防止多行原始字符串文字中出现新行字符 1 年前 |
|
|
Bogaso · 从列表中返回与模式匹配的元素 1 年前 |
|
|
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 1 年前 |