哈希表

哈希表有三个重要的方面

1.装填因子a,即已存入表中的元素个数和表大小之比。a越小,发生冲突的概率越小,但是a过小,会造成空间的浪费。

2.哈希函数,即通过key第一次找到的地址,多个不同的key可能找到同一个地址,这就是冲突。

3.解决冲突的方法。

 

哈希函数的构造方法:

1.直接定址法:取关键字的线性函数值为散列地址,addr = a*key + b 。由于是线性,因此一个key对应一个地址,不会发生冲突,但是由于地址是线性的,因此会占用连续地址空间,空间效率低。

2.数字分析法:其实就是取key中的几位当地址,当然这几位要分布得比较均匀例如:

key:

347

390

354

383

就可以用后两位作为地址了。

3.随机数法:选取一个随机函数random, addr = random(key),这种方法适用于key的长度不等。

其余方法见文章 哈希表(一)

 

解决冲突的方法

1.开放地址法:即当插入的新记录的地址已经被占用时,在表里找一个没有被占用的,插进去。详情见哈希表(一)

2.链地址法:把同义词(key通过哈希函数取得相同地址的)存入链表,

其余方法见哈希表(一)

 

 

 

哈希表的主要作用是快速查找,插入和查找时所用的哈希函数和解决冲突的方法是一样的。

posted @ 2013-11-16 19:07  米其林轮船  阅读(246)  评论(0编辑  收藏  举报