哈希表在我们实际生活中运用的还是相当广泛的,比如:海量数据处理的时候,当然是要在哈希上进行变通拓展的。要想能运用它就得了解它,下来我们就先从哈希表的基础说起。
1.哈希表的定义
哈希表(Hash table,也叫散列表),是依据关键码值(Key)而直接进行访问在内存存储位置的数据结构。也就是说,它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
2.构造哈希表经常使用的散列函数的方法有:
(1)直接定址法---取关键字的某个线性函数为散列地址,Hash(Key)= Key或Hash(Key)= A*Key + B,A、B为常数。但是这种方法有很大的缺陷,就是当关键码比较分散时,hash表的所浪费的空间是非常大的。
(2)除留余数法---取关键值被某个不大于散列表长m的数p除后的所得的余数为散列地址。Hash(Key)= Key% P。
(3)平方取中法---取key平方后的中间几位作为散列地址。
(4)折叠法------将关键字分割成位数相同的几部分,最后一部分位数可以不同,然后取这几部分的叠加和(去除进位)作为散列地址。数位叠加可以有移位叠加和间界叠加两种方法。移位叠加是将分割后的每一部分的最低位对齐,然后相加;间界叠加是从一端向另一端沿分割界来回折叠,然后对齐相加。
(5)随机数法-----选择一个