一、散列表的基本概念

二、散列函数的构造方法
1、除留余数法
 下面那个散列表,因为取余的范围只能在0-12,所以最后那两个空了出来  这里出现一个疑惑,使用最大质数7进行取余,反而冲突更多了?

2、直接定址法
 
 这种方式虽然分布的均匀,但还是可能发生冲突。 
三、处理冲突的方法
1、拉链法
 基于拉链法的查找     一共有12个元素,这些个链表第一层有6个,二层有4个。。。。  上面两个式子一样,但是下面的式子反映了冲突次数  理想状态下,没有冲突
下面是查找失败的平均查找次数and装填因子 ①装填因子,其越大表示装的约满 装填因子不仅会影响失败时的查找效率,也会一定程度上的查找成功时的效率(装填因子大,反映了冲突的次数增加,查找平均长度变长)
2、开放定址法

线性探测法
 探测到2位置为空,不冲突,将其放到这 
  查找操作 首先使用哈希函数算出算出27的关键词,其次线性探测法。。。发现14、1和27是同义词,687和27不是同义词
 疑惑?拉链法,空位置不算一次比较(这里只是存储的指针),而这里的查找操作就是存储的数,是同类型的,算作一次。  删除操作 

  这是线性探测法的一个弊端,看起来是满的,实际上是很空的,查找79需要有8次冲突。
查找效率   如果一个数被映射到了0这个位置,因为他是空的,直接比较一次就可以知道查找失败,当映射到1时,比较13次,。。。

平方探测法


 查找71,先比较6这个位置,其次19,32,45,58,71  8不满足4j+3,所以不能探测所有
伪随机序列法

 
四、散列查找及性能分析
|