赞
踩
1、背定义
根据给定的关键字来计算出关键字在表中地址的数据结构。
散列表建立了关键字和存储地址之间的一种直接映射关系,这个映射叫做散列函数,存放记录的数组叫做散列表。
Hash(key)=Addr。
2、分析
1)散列函数,又称为哈希(Hash函数),采用散列技术把纪录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表。
2)关键字、散列地址、类似与x1和x2两个不同的变量,可能出现相等的函数值一样,两个不同的关键字可能映射到同一个散列地址,该情形被称为冲突****。对于具有相同函数值的关键字在这里称为同义词
3)构造函数要点
a.散列函数的定义域必须包含全部需要存储的关键字,而值域的范围则依赖于散列表的大小或地址范围。
b.散列函数计算出来的地址应该等概率、均匀地分布在整个地址空间,从而减少冲突的发生。
c.散列函数应尽量简单,能够在较短时间内就计算出任一关键字对应的散列地址。
4)冲突:若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数,这就是使关键字经过散列函数得到一个“随机的地址”,从而减少碰撞。但其实散列是随机的就不能体现完全均匀,因而需要进一步了解其他方法。
3、通过链接法解决冲突
看图
看槽中变化,把散列到同一槽中的所有元素(相同哈希值的)都放在一个链表中,槽j中有一个指针,它指向存储所有散列到j的元素的链表的表头;如果不存在这样的元素,则槽j中为NIL.
4.开放寻址法解决冲突*
5、散列函数构造方法
6、散列表性能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。