1.为了减少比较的次数,或者直接找到目的元素的下表,提出了Hash。
2.Hash 函数的构造方法
(1)常用的是取模的方法;
(2)数字分析法用于知道全部关键字,提取原关键字中的部分(即不重复的)作为关键字,例如在图书编号中;
(3)平方取中法,一个数平方后的的中间几位和原数的每一位都有关,可以选做关键字;
(4)折叠法,将关键字分割成位数相同的几部分,然后取这几部分的叠加和作为散列值的地址。
3.处理冲突的方法
first 开放地址法
(1)线性探测法:把散列表当作一个循环表,所选取的位置冲突时,顺序下一个空位作为该地址;
(2)二次探测法:如取模n,如果取模后位置已经占了,则加1^2,如果位置也占了,则加2^2,如果还占加3^2....最后加到(n-1)^2,还没有空位的话 就返回_。
(3)伪随机探测法:如取模n,如果取模后位置已经占了,则设置一个伪随机数m,去占领【(x%n)+m】%n的位置。
second 链地址法
把具有相同地址的记录放在一个单链表中。