1.概述
不需要进行关键字值的比较便可以直接取得所查的记录,这种方法既是一种查找方法,也是一种确定存储位置的方法——散列(hash)方法,它与顺序存储结构、链式存储结构和索引存储结构一样,是存储数据的又一种有用的方法。A=H(k); 散列地址A是关键字值k的函数。
例如Pascal语言的符号表就是散列表的应用,它规定一个符号可以由字母为首的最多8个字符组成,这样,可能有个字符,但实际中只要保留1000个存放位置就够了。因此,散列函数H是一种压缩映像,因此就难免会出现冲突,一般用装填因子来衡量散列表的饱满程度:
散列表中实际存入的元素数 / 散列表基本区的最大容量
一般情况下a<1,若a太小,则意味着很多空间没有被有效利用,a越大,散列表越满,就越可能发生冲突。
设计一个散列表的过程:①确定散列表的地址空间范围,确定散列函数值域。②构造合适的散列函数。③选择处理冲突的有效方法。