哈希表散列函数汇编
* * 哈希表 哈希表又称散列表。 哈希表存储的基本思想是:以数据表中的每个记录的关键字 k为自变量,通过一种函数H(k)计算出函数值。把这个值解释为一块连续存储空间(即数组空间)的单元地址(即下标),将该记录存储到这个单元中。在此称该函数H为哈希函数或散列函数。按这种方法建立的表称为哈希表或散列表。 * * 例如,要将关键字值序列(3,15,22,24),存储到编号为0到4的表长为5的哈希表中。 计算存储地址的哈希函数可取除5的取余数算法H(k)=k % 5。则构造好的哈希表如图所示。 哈希表 * * 理想情况下,哈希函数在关键字和地址之间建立了一个一一对应关系,从而使得查找只需一次计算即可完成。由于关键字值的某种随机性,使得这种一一对应关系难以发现或构造。因而可能会出现不同的关键字对应一个存储地址。即k1≠k2,但H(k1)=H(k2),这种现象称为冲突。 把这种具有不同关键字值而具有相同哈希地址的对象称“同义词”。 在大多数情况下,冲突是不能完全避免的。这是因为所有可能的关键字的集合可能比较大,而对应的地址数则可能比较少。 对于哈希技术,主要研究两个问题: (1)如何设计哈希函数以使冲突尽可能少地发生。 (2)发生冲突后如何解决。 哈希表 * * 构造好的哈希函数的方法,应能使冲突尽可能地少,因而应具有较好的随机性。这样可使一组关键字的散列地址均匀地分布在整个地址空间。根据关键字的结构和分布的不同,可构造出许多不同的哈希函数。 1.直接定址法 直接定址法是以关键字k本身或关键字加上某个数值常量c作为哈希地址的方法。该哈希函数H(k)为: H(k)=k+c (c≥0) 这种哈希函数计算简单,并且不可能有冲突发生。当关键字的分布基本连续时,可使用直接定址法的哈希函数。否则,若关键字分布不连续将造成内存单元的大量浪费。 哈希函数的构造方法 * * 例:统计某地区从1949年到1995年每年出生的人数,列在一张表中。年份为关键字,因共有47年,所以表中位置范围是1~47。 设置H(k)=k-1948即可,其中k为年份数。 这样的哈希表示意如下: 若要查1970年的出生人数,则根据(1970-1948=22)计算,在表的第22个位置即可找到。 哈希函数的构造方法 * * 2.除留余数法 取关键字k除以哈希表长度m所得余数作为哈希函数地址的方法。即: H(k)=k%m 这是一种较简单、也是较常见的构造方法。这种方法的关键是选择好哈希表的长度m。使得数据集合中的每一个关键字通过该函数转化后映射到哈希表的任意地址上的概率相等。理论研究表明,在m取值为素数(质数)时,冲突可能性相对较少。 哈希函数的构造方法 * * 3.平方取中法 取关键字平方后的中间几位作为哈希函数地址(若超出范围时,可再取模)。 设有一组关键字ABC,BCD,CDE,DEF,……其对应的机内码如表所示。假定地址空间的大小为1000,编号为0-999。现按平方取中法构造哈希函数,则可取关键字机内码平方后的中间三位作为存储位置。计算过程如下表所示: 哈希函数的构造方法 * * 4.折叠法 这种方法适合在关键字的位数较多,而地址区间较小的情况。 将关键字分隔成位数相同的几部分。然后将这几部分的叠加和作为哈希地址(若超出范围,可再取模)。 例如,假设关键字为某人身份证号码430104681015355,则可以用4位为一组进行叠加。即有5355+8101+1046+430=14932,舍去高位。 则有H(430104681015355)=4932 为该身份证关键字的哈希函数地址。 哈希函数的构造方法 * * 5.数值分析法 若事先知道所有可能的关键字的取值时,可通过对这些关键字进行分析,发现其变化规律,构造出相应的哈希函数。 例:对如下一组关键字通过分析可知:每个关键字从左到右的第l,2,3位和第6位取值较集中,不宜作哈希地址。 剩余的第4,5,7和8位取值较分散,可根据实际需要取其中的若干位作为哈希地址。 哈希函数的构造方法 * * 若取最后两位作为哈希地址,则哈希地址的集合为下表所示: 哈希函数的构造方法 * * 冲突的解决方法 假设哈希表的地址范围为0~m-l,当对给定的关键字k,由哈希函数H(k)算出的哈希地址为i(0≤i≤m-1)的位置上已存有记录,这种情况就是冲突现象。 处理冲突就是为该关键字的记录找到另一个“空”的哈希地址。即通过一个新的哈希函数得到一个新的哈希地
您可能关注的文档
- 品管圈汇报(最新版).ppt
- 品话题作文.ppt
- 第9章农业生态系统污染生态学.ppt
- 第9章剪切与联接件.ppt
- 第9章协调的产品与供应链设计.ppt
- 品质市场的通行证.pptx
- 第9章光导纤维式传感器.ppt
- 品管圈(骨架圈).pptx
- 第9章单点交叉口信号控制分析-王昊(东南大学).ppt
- 品质意识讲义.ppt
- 2026年预防为主,生命至上安全培训课件.pptx
- 2026年三级安全教育.pptx
- 2026年检测业务安全培训.pptx
- 2026年消防动火培训.pptx
- 2026年重大事故隐患专项排查整治行动清单.pdf
- 2026年健康义普急救.pptx
- 2025—2026学年度四川省广元市苍溪县九年级上学期期末考试历史试题(含答案).docx
- 2025—2026学年度四川省泸州市合江县马街中学校九年级上学期期末历史试题(含答案)(九上_九下第二单元).docx
- 2025—2026学年度云南省曲靖市宣威市民族中学等校联考九年级上学期期末模拟历史试题(含答案).docx
- 2025-2026学年科普版七年级下册英语Unit7 Being a Smart Shopper素养测评卷(含答案).docx
最近下载
- 2026年春期人教版四年级下册数学全册教案(核心素养教案)(全册共243页)(2).pdf VIP
- 《爱尔纳·突击》剧本.docx VIP
- 酒吧劳动合同(标准版).docx VIP
- 《乡土中国》读后感.docx VIP
- 2026年中考初中语文文言文每日一练习题(含答案).pdf
- 零冷水循环水管安装图.docx VIP
- 江西省部分高中学校2024—2025学年第二学期期中统一检测高一英语试卷及答案.docx VIP
- 2025-2026学年人教版(2024)初中生物八年级上册(全册)教学设计(附目录).docx VIP
- 2026年江西生物科技职业学院单招职业技能考试题库附答案详解(综合卷).docx VIP
- 2025-2026学年人教版(2024)初中生物八年级上册全册(教案含反思).docx VIP
原创力文档

文档评论(0)