关于散列表的笔记
概述
散列技术实在记录的存储位置和它的关键字之间建立一个确定的对应关系f使得每个关键字key对应一个存储位置f(key)。
散列原则
1、计算简单
计算如果过于复杂,那么也会产生性能问题。
2、散列分布均匀
分布均匀的散列查询也会有益于查询减小查询长度。
散列的构造方法
1、直接定址法
取某个关键的线性函数的值为散列值。适用于量比较少的情况。
2、数字分析法
主要是分析数字然后抽取。
3、平方取中法
4、折叠法
距离将一个关键字987654321分为四组之后再叠加求和
5、除留余数法
6、随机数法
处理散列冲突的方法
1、开放定址法
开放定址法 就是一旦发生了冲突,就回去寻找下一个空的散列地址。
f(key) = (f(key)+di)MOD m;
以上解决冲突的开放定址法称为线性探测法。
di的函数如果是平方的话,那么叫做二次探测法
2、在散列函数法
就是当一个散列函数失败之后更换另一个散列函数.
3、链地址法
就是冲突之后直接在冲突后面,用链表连接好。
4、公共区溢出法
就是如果冲突就去溢出表内进行查找。
散列的性能分析
1、散列函数是否均匀。
2、如何处理冲突。
3、散列的装填因子
散列的装填因子=填入表中的记录个数/散列表长度