哈希表也叫散列表,是一种空间换时间的做法。哈希表是根据关键字直接进行访问的数据结构,通过某种规则把关键字映射到数组中的某一个位置,加快查找速度,映射规则就是哈希函数(三列函数),如果多个不同的关键字通过哈希函数后散列到数组的相同位置就是冲突。
常用的散列函数有直接定址法,数字分析法,平凡取中法,除留余数法,折叠法。典型的哈希函数有MD4,MD5,SHA-1等。Hash算法在信息安全方面的主要作用表现在三个方面(1)文件检验,(2)数字签名,(3)鉴权协议。
处理冲突的主要方法:(1)链地址法,把所有冲突的关键字都存储在一个线性链表中,这个散列表由其散列地址唯一标识。(2)开放定址法,可以存放新表象的空闲地址既可以存放它的同义词,也可以存放非同义词。数学递推公式是Hi=(H(key)+di)%m,其中i为1,2……等整数,Hi表示冲突第i次后的散列地址,m为散列表的长度,di为增量序列,按照di的不同可以分为线性探测法、二次探测法和随机探测法。
当di=1,2,3……称为线性探测法,特点是发生冲突时直接顺序查看下一个单元,直到找到一个空单元或者查遍全表;
当时,称为二次探测法;
当di为伪随机数序列时,称为随机探测法。
(3)再散列法,发生冲突时,利用另外一个哈希函数再次计算一个地址,直到不冲突为止;
(4)建立一个公共溢出区,一旦由哈希函数得到冲突地址,就都填入溢出区表。
后面会加上哈希在数据分布式存储上的应用问题,如何利用哈希提高集群的性能。
哈希表
最新推荐文章于 2024-11-18 17:33:44 发布