在散列表基础知识(1)中,我们介绍了分离链接法来解决哈希冲突。它的一个缺陷就是需要经常的分配动态内存,这是比较花费时间的。本文再介绍解决散列表的另外一种方法开放定址法。不需要动态多次的动态分配内存。
开放定址法是运用一个数组,所有的数据都需要放入这个数组中,如果发生哈希冲突,我们通过一个函数 F 来解决,具体的为如果当前要插入的数据为
hi(X)=(Hash(X)+F(i))modTablesize,F(0)=0
确定备选位置,直到找到一个空位置。
那么接下来的问题就是哈希冲突解决函数 F(i) 的确定。我们介绍三种方法,分别是线性探测法(线性函数),平方探测法(平方函数),双散列(哈希函