知识要点:
线性索引结构、倒排表、静态搜索树的结构和特点;
B树的结构;(B-树,B+树)
散列的实现原理和各种操作的实现算法。(Hash表,平均查找长度(成功、失败))
1.散列函数和散列地址:记录存取位置P和关键字Key之间的对应关系,有P=Function(Key),这个对应关系Function称为散列函数
通过此函数得出的P称为散列地址。
2.散列表:一个有限的连续的地址空间。(通常采用以为数组存取,此时的散列地址对应的就是数组的下标,数组内
保存的值就是关键字Key。)
3.冲突和同义词:由于散列函数的缺陷不同的关键字Key可能对应到同一散列地址上,这种现象称为冲突。发生冲突的关键字互
称为当前散列函数Function的同义词。(散列函数的缺陷引发冲突,发生冲突的关键词互为同义词)
☆散列函数的构造方法:(数字分析法、平方取中法、折叠法、除留余数法)
常用的就是除留余数法,Function(Key)=Key%p
Key为所要保存的关键字、p为一个不大于散列表长度的数,一帮情况下p取不大于表长的最大质数。
优点:保证了关键字所对应的散列地址一定在散列表所对应的地址空间中。
☆冲突的处理方法:(开放地址法:线性探测法、二次探测法、伪随机探测法;链地址法)
开放地址法:以空间为代价,散列表大小固定
函数原型:Function(Key)=(Function(Key)+d)%m,Key为关键字、m为散列表长、d为递增量