0、前言
顺序表:一个一个挨个查找;
有序查找:二分查找方法;
散列表查找:记录的存储位置=F(关键字);
散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)。
查找时,根据这个确定的对应关系找到固定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。
我们把这种对应关系f称为散列函数,又称为哈希函数(Hash)。采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或者哈希表。
1、散列表的查找步骤
1)在存储时,通过散列函数计算记录的散列地址,并按此散列地址存储该记录;
2)在查找时,通过同样的散列函数计算记录的散列地址,按此散列地址访问该记录。
所以说,散列技术既是一种存储方法,也是一种查找方法。
散列技术最适合的求解问题就是查找与给定关健值对应的记录(一对一)。不过散列表不适合范围查找,比如查找一个班级18-22岁的同学,在散列表中没法进行。想获得表中记录的排序也不可能,像最大值、最小值等结果也都无法从散列表中计算出来。
2、散列函数的构造(两个关键字不能出现冲突)
好的散列函数:计算简单和散列地址分布均匀。
1)直接定址法;F(key)=key;
2)数字分析法;
3)平方取中法;
4)折叠法;
5)除留余数法;
6)随机数法;
3、处理散列冲突的方法