一,散列表的基本概念
直接将元素的储存位置和其关键字之间建立某种直接关系,那么在进行查找时,就无需做比较或做很少次的比较,按照这种关系直接由关键字找到相应的记录,这就是散列表查找法的思想。
它通过对元素关键字值进行某种运算,直接求出元素的地址,即使用关键字到地址的直接转换方法,而不需要反复比较。因此散列查找法又称为杂凑法或散列法
散列表中的术语:
- 散列函数和散列地址:在记录的存储位置p和其关键字key之间建立一个确定的对应关系H,使得p=H(key),称这个对应关系H为散列函数,p为散列地址
- 散列表:一个有限连续的地址空间,用以存储按散列函数计算得到相应散列地址的数据记录。通常散列表的存储空间是一个一维数组,散列地址是数组的下标。
- 冲突和同义词:对不同的关键字可能得到同一散列地址,即key1 != key2,但是H(key1) == H(key2),这种现象称为冲突。具有相同函数值的关键字对该散列表函数来说称为同义词,key1与key2互称为同义词。
- eg:A称为关键字key,则A经过关系H后,在数组中的位置称为存储位置p;而不同的关键字8,4,经过关系(关键字%2)得到的存储地址都是0,称为冲突,而8,4则为同义词
- 二,散列函数的构造方法