问三:解决hash冲突的方法有哪些?

 

开放地址法

再hash的方法

拉链法

建立公共溢出区法

 

开放地址法:

1. 基本思想:当发生地址冲突的时候,按照某种方法继续探测哈希表中的其他存储单元,直到找到空位置为止;  

2. 所用公式 Hi(key) = [H(key) + di]mod m;其中i = 1、2、3.....k(k<m-1)

H(key)为关键字key的直接hash地址

m为hash表的长度

di为再次探测时的地址增量

 

再hash的方法:

当发生冲突时,使用第二个、第三个、哈希函数计算地址,直到无冲突。缺点:计算时间增加

 

拉链法:

在HashMap中就是使用拉链法来解决hash冲突的问题的;

将hash冲突的记录存储在统一链表中

 

建立公共溢出区:

建立公共溢出区的基本思想是:假设哈希函数的值域是[1,m-1],则设向量HashTable[0...m-1]为基本表,每个分量存放一个记录,另外设向量OverTable[0...v]为溢出表所有关键字和基本表中关键字为同义词的记录,不管它们由哈希函数得到的哈希地址是什么,一旦发生冲突,都填入溢出表。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章