Hash函數的设计优化.docVIP

  • 7
  • 0
  • 约7.85千字
  • 约 10页
  • 2017-01-19 发布于重庆
  • 举报
Hash函數的设计优化

Hash函数的设计优化 天津南开中学 李羽修 【摘要】 Hash是一种在信息学竞赛中经常用到的数据结构。一个好的Hash函数可以很大程度上提高程序的整体时间效率和空间效率。本文对面向各种不同标本(关键值)的Hash函数进行讨论,并对多种常用的Hash函数进行了分析和总结。 【关键字】 Hash 函数,字符串,整数,实数,排列组合 【正文】 对于一个Hash函数,评价其优劣的标准应为随机性,即对任意一组标本,进入Hash表每一个单元(cell)之概率的平均程度,因为这个概率越平均,数据在表中的分布就越平均,表的空间利用率就越高。由于在竞赛中,标本的性质是无法预知的,因此数学推理将受到很大限制。我们用实验的方法研究这个随机性。 一、整数的Hash函数 常用的方法有三种:直接取余法、乘积取整法、平方取中法。下面我们对这三种方法分别进行讨论。以下假定我们的关键字是,Hash表的容量是,Hash函数为。 1.直接取余法 我们用关键字除以,取余数作为在Hash表中的位置。函数表达式可以写成: 。 例如,表容量,关键值,那么。该方法的好处是实现容易且速度快,是很常用的一种方法。但是如果选择的不好而偏偏标本又很特殊,那么数据在Hash中很容易扎堆而影响效率。 对于的选择,在经验上,我们一般选择不太接近的一个素数;如果关键字的值域较小,我们一般在此值域1.1~1.6倍范围内选择。

文档评论(0)

1亿VIP精品文档

相关文档