22.第27章:散列

2018-02-01  本文已影响0人  Ching_Lee

1.概念

2.散列函数和散列码

典型的散列函数首先将搜索键转换成一个称为散列码的整数值,然后将散列码压缩为散列表中的索引。

3.使用开放地址法处理冲突

是在冲突发生时,在散列表中找到一个开放位置的过程。

1)线性探测
2)二次探测法

线性探测法问题:

3)再哈希法

4.使用链地址法处理冲突

链地址法将具有同样的散列索引的条目都放在一个位置,而不是寻找一个新的位置。链地址法的每个位置使用一个桶来放置多个条目。


5.装填因子和再散列

装填因子:衡量一个散列表有多满。是元素数目和散列表的比值。对于开放地址而言,需要位置装填因子在0.5之下,对于链地址,维持在0.9之下。Hashmap采用0.75为装填因子。
再散列:如果装填因子溢出,则增加散列表的大小,并重新装载条目到一个新的更大的散列表中,这称为再散列。

6.使用散列实现映射表

使用链地址法实现映射表,对照java.util.Map来设计自定义的Map接口,命名为MyMap,具体类命名为MyHashMap。


7.使用散列实现set

使用链地址法


上一篇下一篇

猜你喜欢

热点阅读