您的位置:首页 > 理论基础 > 数据结构算法

哈希算法

2016-08-10 11:45 169 查看

哈希算法



哈希表

1. 基本原理定义

散列表(Hash table,也叫哈希表):是根据关键码值(Key value)而直接进行访问的数据结构

散列函数:散列表通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度,儿这个映射函数叫做散列函数

2. 哈希函数构造

常用方法:直接寻址法,除余法,数字分析法,平方取中法,折叠法,随机数法

3. 冲突处理

开放寻址法: Hi=(H(key) + di) MOD m,i=1,2,…,k(k<=m-1),其中H(key)为散列函数,m为散列表长,di为增量序列

线性探测再散列: di=1,2,3,…,m-1,顺序查看表的下一单元,直至找到某个空单元,或查遍全表。

二次探测再散列: di=1^2,-1^2,2^2,-2^2,⑶^2,…,±(k)^2,(k<=m/2),在表的左右进行跳跃式探测

伪随机探测再散列: di=伪随机数序列,根据产生的随机数进行探测

再散列法: 建立多个hash函数,若是当发生hash冲突的时候,使用下一个hash函数,直到找到可以存放元素的位置。

拉链法(链地址法): 就是在冲突的位置上简历一个链表,然后将冲突的元素插入到链表尾端

建立公共溢出区: 将哈希表分为基本表和溢出表,将与基本表发生冲突的元素放入溢出表中

4. 性能分析

优势:数据的存储和查找消耗的时间很少,接近常数时间O(1)。

缺陷:消耗内存大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息