【信源编码 作业二】哈希表

来源:互联网 发布:百度一下淘宝网裤子 编辑:程序博客网 时间:2024/05/02 04:46

1. 哈希表的概述
哈希表(Hash table,也叫散列表)是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度,这个映射函数被称为哈希函数,存放记录的数组被称为哈希表,记录的存储位置=f(关键字),这里的对应关系f被称为哈希函数,采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间被称为哈希表。
哈希表就是把key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。而当使用哈希表进行查询的时候,就再次使用哈希函数将key转换为对应的数组下标,并定位到该空间获取value,如此一来,就可以充分利用到数组的定位性能进行数据定位。
2. 哈希表的算法实现
哈希表的实现就是找到一种数据内容和数据存放地址之间的映射关系。数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。要想实现哈希表就要综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构。哈希表有多种不同的实现方法,最常用的一种方法是拉链法,我们可以理解为“链表的数组”,如下图所示:
这里写图片描述
左边是个数组,数组的每个成员包括一个指针,指向一个链表的头,当然这个链表可能为空,也可能元素很多。根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素。
元素特征转变为数组下标的方法就是散列法。散列法不止一种,包括直接寻址法、数字分析法、平方取中法、折叠法、随机数法、除留余数法、平方散列法、斐波那契散列法等等,最常用的是除留余数法。该方法的公式为index = value % 16,它是针对正整数的,把余数作为索引,对一组数除以 16 得到索引。

0 0
原创粉丝点击