散列表的查找技术

你。 提交于 2019-12-29 14:51:09

散列函数的构造
直接定址法
除留余数法
数字分析法
平方取中法
折叠法(分段叠加法)
冲突处理方法
开放定址法
链地址法
建立公共溢出区
散列表:采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表。
散列函数:将关键码映射为散列表中适当存储位置的函数。
散列地址:由散列函数所得的存储位置址 。
散列技术的关键问题:
⑴ 散列函数的设计。如何设计一个简单、均匀、存储利用率高的散列函数。
⑵ 冲突的处理。如何采取合适的处理冲突方法来解决冲突。
散列函数
直接定址法
除留余数法
数字分析法
平方取中
折叠法
冲突的 处理
开散列方法( open hashing,也称为拉链法,separate chaining ,链地址法)
闭散列方法( closed hashing,也称为开地址方法,open addressing ,开放定址法)
建立公共溢出区
线性探测法散列表
假设给定的值为K,根据所设定的散列函数h,计算出散列地址h (K)
否则将该地址中的值与K比较,若相等则检索成功,算法结束
否则,按建表时设定的处理冲突方法查找探查序列的下一个地址,如此反复下去
直到某个地址空间未被占用(查找不成功,可以插入),算法结束
或者关键码比较相等(有重复记录,不需要插入)为止,算法结束
如果探测完整个hash表,都没有进行插入或查找失败,则抛出空间异常(hash表容量不足)
处理冲突的方法——拉链法(链地址法)
基本思想:将所有散列地址相同的记录,即所有同义词的记录存储在一个单链表中(称为同义词子表),在散列表中存储的是所有同义词子表的头指针。
用拉链法处理冲突构造的散列表叫做开散列表。
设n个记录存储在长度为m的散列表中,则同义词子表的平均长度为n / m。
处理冲突的方法——公共溢出区
基本思想:
散列表包含基本表和溢出表两部分(通常溢出表和基本表的大小相同),
将发生冲突的记录存储在溢出表中。
查找时,对给定值通过散列函数计算散列地址,先与基本表的相应单元进行比较,若相等,则查找成功;否则,再到溢出表中进行顺序查找。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!