自考路之散列表

本文介绍了散列表的概念,散列函数的选择方法如数字分析法、除数余数法、平均取中法和基数转换法,并详细阐述了散列表的实现方式,包括线性探测法、二分探测法、链地址法、多重散列法和公共溢出区法。通过实例解析了各种方法的优缺点,探讨了如何减少冲突和提高查找效率。最后,作者分享了学习散列表过程中的心理调适和心得。
摘要由CSDN通过智能技术生成

背景:之前介绍了《软考路之线性表》,在顺序表和树表中查找数据元素要进行一系列的键值比较过程。为了使数据元素的存储位置和键值之间建立某种联系,以减少比较次数,现在介绍用散列表技术实现动态查找表。


一、散列表


    数据元素的键值和存储位置之间建立的对应关系H称为散列函数,用键值通过散列函数获取存储位置的这种存储方式构造的存储结构称为散列表(Hash Table),这一映射过程称为散列。

    如果选定了某种散列函数H及相应的散列表L,则对每个数据元素X,函数值H(X.key)就是X在散列表L中的存储位置,这个存储位置也称为散列地址。

    散列文件是一种计算寻址文件。


二、常用散列法


1、数字分析法


    又称为数字选择法,其方法是收集所有可能出现的键值,排列在一起,对键值的每一位进行分析,选择分布较均匀的若干位组成散列地址。

    所取的位数取决与散列表的表长,见表长为100,则取2位即可。

    假定已知可能出现的所有键值如下:

                      


    对所有的键值分析不能看出,左起前三位都是“7 1 2”,第五位只能取1、4,第七位只能取6、7、8、,故这五位都不可取。剩下的第4、6、8、9位都是分布比较均匀的,可考虑将它们或它们中的几位组织起来作为散列地址。


评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值