散列表的查找

Hash Search
特点 Features
. 散列,也称哈希 Hash
. 不是基于关键字查找;而是利用散列函数处理关键字得到数据元素的地址,根据地址查找
. 大脑是做索引的,不是做存储的
key Hash(key) Location
关键字空间 地址空间
基本术语 Items
. 散列地址:数据元素对应的存储地址
. 散列函数:处理关键字,建立起数据元素和存储地址确定的对应关系
. 散列表:地址连续的存储空间;通常使用数组表示,散列地址就是散列表数组的下标/索引
. 冲突/同义词:不同的关键字处理后可能得到同一个散列值
散列函树 Hash Function
1. 数字分析法
2. 平方取中法
3. 折叠法
4. 取余%
...
已知给定哈希函数Hash(key) = key % 5,求关键字集合{3, 15, 22, 30}对应的哈希表
Hash 0 1 2 3
key 15 30 22 3
关键字30的处理
1. 开发地址法;如果相邻单元 - 1为空,则存入
2. 链地址法;所有冲突的关键字以链表的形式挂载与当前地址;再根据关键字额外指定的标识进行查找
已知给定哈希函数Hash(key) = key % 13,求关键字集合{19, 14, 23, 1, 68, 20, 84, 27, 55, 11, 10, 79}对应的哈希表
Hash 0 1 2 3 4 5 6 7 8 9 10 11 12
key 14 68 19 20 23 11
1 55 84 10
27
79