我是靠谱客的博主 专注帽子,最近开发中收集的这篇文章主要介绍关于理解哈希表的除法散列法(取余法),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

《算法精解:C语言描述》上提到的一种简单的将键值k映射到m槽位的方法:h(k)=k mod m。
而该书上写了一段话:“通常情况下,要避免m取2的幂,因为假设m=2^p,则h(k)是k的二进制数的低p位......,通常选择m会是一个素数,而且不那么靠近2的幂......”。这段话理由是:

以 m = 2^3 = 8 为例,如下图所示:


从概率的角度,出现相同的概率比较高,而通常我们希望 h(k) 的值依赖于 k 的所有位而不是最低 p 位,因为这样才会使得散列表看起来更均匀。当m不是素数时在散列分布时也会增加分布不均匀的机会,总的来说哈希函数的设计尽量使键值均匀、随机地分布在表中,其他方法可以参考《算法导论》。

最后

以上就是专注帽子为你收集整理的关于理解哈希表的除法散列法(取余法)的全部内容,希望文章能够帮你解决关于理解哈希表的除法散列法(取余法)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部