散列表:根据关键字码直接进行访问的数据结构;实现字典操作的一种有效数据结构。
特点:
1. 是普通数组的推广。普通数组利用下标直接寻址。
2. 散列表使用一个长度与实际存储的关键字数目成比例的数组来存储。
3. 不是直接把关键字作为数组的下标,而是由关键字计算出相应的下标。
4. 不同的输入可能会散列成相同的输出,不可能从散列值来唯一确定输入值。
散列表的使用场景:
1. 如果全域(可以理解为关键字的值域)很大,存储全域空间,存不下。
2. 实际要存储的关键字集合相当于全域很小,分配全域空间,造成很大的浪费。
应用:
快速查找:关键码值映射到表的一个位置访问记录。
压缩映射:把任意长度的输入通过散列函数变换成固定长度的输出。散列值的空间远远小于输入值的空间。
实现:
1. 如何构建散列函数。
2. 如何处理冲突。