8.4.3 解决冲突的方法 由于哈希存贮中选取的哈希函数不是线性函数,将大的关键值的取值空间映射到小的地址空间中,故不可避免地会产生冲突,下面给出常见的解决冲突方法。 1.开放定址法 开放定址法就是从发生冲突的那个单元开始,按照一定的次序,从哈希表中找出一个空闲的存储单元,把发生冲突的待插入关键字存储到该单元中,从而解决冲突的发生。在哈希表未满时,处理冲突需要的“下一个”空地址在哈希表中解决。 开放定址法利用下列公式求“下一个”空地址 Hi=(H(key)+di) MOD m i=1,2,…K(K=m-1) 其中H(key)为哈希函数,m为哈希表长度,di为增量序列 根据di的取法,解决冲突时具体使用下面一些方法。 (1)线性探查法 假设哈希表的地址为0∽m-1,则哈希表的长度为m。若一个关键字在地址d处发生冲突,则依次探查d+1,d+2,…,m-1(当达到表尾m-1时,又从0,1,2,….开始探查)等地址,直到找到一个空闲位置来装冲突处的关键字,将这一种方法称为线性探查法。假设发生冲突时的地址为d0=H(k),则探查下一位置的公式为di=(di-1+1)%m (1≤i≤m-1),最后将冲突位置的关键字存入di地址中。 例8-5 给定关键字序列为19,14,23,1,68,20,84,27,55,11,10,79,哈希函数H(k)=k%13 ,哈希表空间地址为0∽12,试用线性探查法建立哈希存贮(哈希表)结构。 得到的哈希表如图8-17所示 (2) 二次方探查法 该方法规定,若在d地址发生冲突,下一次探查位置为d+12,d-12,d+22,d- 22, …,直到找到一个空闲位置为止。 开放地址法充分利用了哈希表的空间,但在解决一个冲突时,可能造成下一个冲突。另外,用开放地址法解决冲突不能随便对结点进行删除。 2. 链地址法 链地址法也称拉链法,是把相互发生冲突的同义词用一个单链表链接起来,若干组同义词可以组成若干个单链表 例:对给定的关键字序列19,14,23,1,68,20,84,27,55,11,10,79,给定哈希函数为H(k)=k%13,试用拉链法解决冲突建立哈希表。 图8-18为用尾插法建立的关于例8-6的拉链法解决冲突的哈希表。 8.4.5 哈希查找的性能分析 哈希查找按理论分析,它的时间复杂度应为O(1),它的平均查找长度应为ASL=1,但实际上由于冲突的存在,它的平均查找长度将会比1大。下面将分析几种方法的平均查找长度。 1.线性探查法的性能分析 由于线性探查法解决冲突是线性地查找空闲位置的,平均查找长度与表的大小m无关,只与所选取的哈希函数H及装填因子α的值和该处理方法有关,这时的成功的平均查找长度为ASL=1/2 (1+1/(1- α)) 。 2.拉链法查找的性能分析 由于拉链法查找就是在单链表上查找,查找单链表中第一个结点的次数为1,第二个结点次数为2,其余依次类推。它的平均查找长度ASL=1+α/2。 例8-7 给定关键字序列11,78,10,1,3,2,4,21,试分别用顺序查找、二分查找、二叉排序树查找、平衡二叉树查找、哈希查找(用线性探查法和拉链法)来实现查找,试画出它们的对应存储形式(顺序查找的顺序表,二分查找的判定树,二叉排序树查找的二叉排序树及平衡二叉树查找的平衡二叉树,两种哈希查找的哈希表),并求出每一种查找的成功平均查找长度。哈希函数H(k)=k%11。 顺序查找的顺序表(一维数组)如图8-19所示, 从图8-19可以得到顺序查找的成功平均查找长度为: ASL=(1+2+3+4+5+6+7+8)/8=4.5; 二分查找的判定树(中序序列为从小到大排列的有序序列)如图8-20所示, 从图8-20可以得到二分查找的成功平均查找长度为: ASL=(1+2*2+3*4+4)/8=2.625; 二叉排序树(关键字顺序已确定,该二叉排序树应唯一)如图 8-21(a)所示,平衡二叉树(关键字顺序已确定,该平衡二叉树也应该是唯一的),如图8-21(b)所示, 从图8-21(a)可以得到二叉排序树查找的成功平均查找长度为: ASL=(1+2*2+3*2+4+5*2)=3.125; 从图8-21(b)可以得到平衡二叉树的成功平均查找长度为: ASL=(1+2*2+3*3+4*2)/8=2.75; 线性探查法解决冲突的哈希表如图8-22所示, 从图8-22可以得到线性探查法的成功平均查找长度为: ASL=(1+1+2+1+3+2+1+8)/8=2.375; 拉链法解决冲突的哈希表如图8-23所示。 从图8-23可以得到拉链法的成功平均查找长度为: ASL=(1*6+2*2)/8=1.25。 30 20 10 40 35 25 23 f T 设 key = 48
您可能关注的文档
- 世界的陆地和海洋(上课).ppt
- 危险化学品物流各环节的安全技术.ppt
- 世界地理 非洲.ppt
- 危险化学品相关学习.ppt
- 危险货物(新增车辆档案).doc
- 世界地理-北美洲-1.ppt
- 世界地理复习一.ppt
- 危险货物的分类.ppt
- 危险货物分类与特性(货运实验).ppt
- 危险货物培训 旅客培训.ppt
- 《阳光青年成长手册:大学生心理健康教育》全套教学课件.pptx
- 《敬业教育》中职全套教学课件.pptx
- 《建筑企业会计》中职全套教学课件.pptx
- 《客房服务与管理》中职全套教学课件.pptx
- 金融壹账通2024年环境、社会及管治报告.docx
- 2024上海机电环境、社会及治理(ESG)报告.docx
- lvorySQL 2025生态大会暨PostgreSQL高峰论坛:云原生数据库架构的革命性与私有化部署实践.pptx
- lvorySQL 2025生态大会暨PostgreSQL高峰论坛:灾难恢复工具内核细节探究与分析.pptx
- OpenClaw:AI从聊天到行动-下一代智能助手白皮书.pptx
- lvorySQL 2025生态大会暨PostgreSQL高峰论坛:在开源数据基层上构建支持对象存储的云原生新架构.pdf
原创力文档

文档评论(0)