关于哈希表
来源:互联网 发布:视频会议软件 编辑:程序博客网 时间:2024/05/16 19:47
什么是哈希表
根据设定的哈希函数H(key)和处理冲突的方法,将一组数据映像到一个连续的地址集(区间),并以关键字中地址集的‘像’作为记录在表中的位置,成为哈希表。
通俗地讲就是哈希表就是用来记录一组数据(key)的地址的。
哈希函数的构造方法。
1. 直接定址法。
H(key) = key ;或H(key) = a*key +b.
2. 数字分析法。
3. 平方取中法
4. 折叠法
5. 除留余数法(m为哈希表长度)
H(key)= key MOD p, p<=m;
6. 随机数法
解决冲突的方法
1. 开放定址法
Hi = (H(key) + di) MOD m i =1,2,3.......,k (k<= m-1)
其中H(key) 为哈希函数;m为哈希表长度;di为增量序列,
di的三种取法:
1、di=1,2,3...........,m-1 称为线性探测再散列
2、di=1^2,-1^2, 2^2, -2^2, 3^2, -3^2........,±k^2, (k<=m-1),称为二次探测再散列。
3、di伪随机数。
0 1 2 3 4 5 6 7 8 9 10
60
17
29
(a)插入前
0 1 2 3 4 5 6 7 8 9
60
17
29
38
(b)按照线性探测再散列38%11 = 5 然后6不行就7不行就8.
0 1 2 3 4 5 6 7 8 9
38
60
17
29
(c)按照二次探测再散列38%11 = 5 然后+1=5不行就-1=4.就可以了。
0 1 2 3 4 5 6 7 8 9
38
60
17
29
(d)用随机数。
2. 再哈希法,Hi = RHi(key) i=1,2,3.....,k
根据不同哈希函数计算哈希地址,RHi为不同的哈希函数,不容易产生聚集,但是增加了时间。
3. 链地址法
^
0
1
2
3
4
5
6
7
8
9
10
11
12
4. 建立一个公共溢出区
- 关于哈希表
- 关于哈希表
- 关于哈希表
- 关于哈希表大小
- 关于哈希表的总结
- 关于Java中的哈希表
- 数据结构::关于哈希表
- 【哈希表】关于map
- 关于
- 关于
- 关于++,--
- 关于#
- 关于。。。
- 关于
- 关于......
- 关于
- 关于
- 关于****
- <%@ include > 和 <jsp:include>的区别
- Android改变监听端口
- PKU 1118
- 用于 Visual Studio 和 ASP.NET 的 Web 应用程序项目部署概述
- Beautiful Line
- 关于哈希表
- 如何配置 WCF 服务
- 给自己的规定
- 05. 对象的初始化
- 【coco2d-html5简单游戏开发】一、连锁反应小游戏
- Java8 简明教程
- hdu 1992 Tiling a Grid With Dominoes(状压&DP)
- make: *** /lib/modules/2.6.18-164.el5/build: No such file
- ubuntu 12.04 安装和使用花生壳