哈希表(散列表)

数组的特点:寻址容易,插入和删除困难
链表的特点:寻址困难,插入和删除容易

而哈希表结合了数组和链表的优点,既能做到寻址容易,也能做到插入、删除容易

哈希表的基本思想是:首先在元素的关键字K和元素的存储位置P之间建立一个对应关系F,使得P=F(K),F称为哈希函数。创建哈希表时,把关键字为K的元素直接存入地址为F(K)的单元;以后当查找关键字为K的元素时,再利用哈希函数计算出该元素的存储位置P=F(K),从而达到按关键字直接存储元素的目的。

哈希函数的构造方法:
1、数字分析法
2、平方取中法
3、分段叠加法
4、除留余数法
  假设哈希表长为m,p为小于等于m的最大素数,则哈希函数为h(k)=k%p,其中%为模p取余运算
5、伪随机数法

处理冲突的方法:
1、开放定址法(再散列法)
2、再哈希法
3、链地址法
这种方法的基本思想是将所有哈希地址为i的元素构成一个称为同义词链的单链表,并将单链表的头指针存在哈希表的第i个单元中,因而查找、插入和删除主要在同义词链中进行。链地址法适用于经常进行插入和删除的情况。
EG:
    已知有一个关键字序列:(27,23,34,14,1,55,20,19,85,83,10,68)散列存储在一个哈希表中,若散列函数为H(key)=key%7,并采用链地址法解决冲突,则等     概率情况下查找成功的平均查找长度为?
    这些key%7分别得到6,2,6,0,1,6,6,5,1,6,3,5
    则存储结构为:
    0-------------14
    1-------------1/85(其中1需要查找1次,85需要查找2次)
    2-------------23
    3-------------10
    4-------------
    5-------------19/68
    6-------------27/34/55/20/83
    总共查找次数为1+1+2+1+1+1+2+1+2+3+4+5=24
    总共有12个关键字
    所以,平均查找次数为24/12=2

4、建立公共溢出区

posted @ 2018-03-28 11:40  第五  阅读(1412)  评论(0编辑  收藏  举报