python 哈希策略

本文介绍了哈希表的工作原理,包括如何构造合适的哈希函数,如除留余数法、平方取中法和折叠法,并讨论了处理哈希冲突的策略,如链接法和开放定址法。最后,通过一个Python程序展示了如何使用链表进行再哈希处理。
摘要由CSDN通过智能技术生成

       一般的线性表、树中,记录在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较。这一类查找方法建立在“比较“的基础上,查找的效率依赖于查找过程中所进行的比较次数。 理想的情况是能直接找到需要的记录,因此必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应。

       哈希表中元素是由哈希函数确定的。将数据元素的关键字K作为自变量,通过一定的函数关系(称为哈希函数),计算出的值,即为该元素的存储地址。表示为: Addr = H(key)。为此在建立一个哈希表之前需要解决两个主要问题:

一、构造一个合适的哈希函数

       常见的哈希函数:

       (1)除留余数法  H(key)=key mod B 

       最简单的哈希函数是将数据除以某一个常数后,取余数来当索引。例如在一个有13个位置的数组中,只使用到7个地址,值分别是12、65、70、99、33、67、48。我们可以把数组内的值除以13,并以其余数来当数组的下标(即作为索引)。

       (2)平方取中法

       平方取中法和除留余数法相似,就是先计算数据的平方,之后再取中间的某段数字作为索引。在下例中,我们使用平方取中法,并将数据存放在100个地址空间中,其操作步骤如下:

       将12、65、70、99、33、67、51平方后得144、4225、4900、9801、1089、4489、2601,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值