Nic*_*unt 9 algorithm hashtable
在各种哈希表实现中,我看到了可变哈希表应该调整大小(增长)时的"幻数".通常,此数字介于每个已分配插槽的值的65%到80%之间.我假设权衡的是,更高的数字将提供更多冲突的可能性和更少的数量,以牺牲使用更多的内存为代价.
我的问题是这个数字是如何得出的?
这是武断的吗?基于测试?基于其他一些逻辑?
我认为你不想考虑表的"多满"(总桶数中有多少"桶"有值),而是为新物品找到一个点可能需要的冲突次数.
几年前我读了一些编译器书(不记得标题或作者),建议只使用链表,直到你有超过10到12个项目.这似乎支持超过10次碰撞意味着重新调整大小的时间.
动态系统的设计与实现.在Icon中对集合和表进行散列表明平均散列链长度为5(在该算法中,平均冲突数)足以触发重新散列.似乎测试支持,但我不确定我是否正确阅读了论文.
看起来调整大小的条件主要是测试的结果.