关于哈希表

来源:互联网 发布:视频会议软件 编辑:程序博客网 时间: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.     建立一个公共溢出区

0 0
原创粉丝点击