* 哈希表查找,插入和删除操作都非常快,为O(1);但是不能有序遍历,并且难于扩展。
* 高级语言的编译器通常用哈希表保留符号表。
* 方法:数字相加;幂的连乘;求余;
* 哈希表在几乎填满的数组中添加数据项效率很低;
* 开放地址法:
1. 线性探测;原始聚集;
2. 二次探测;二次聚集;探测序列总是相同的;
前两种方法的步长都只依赖于哈希值,与关键字无关;
3. 再哈希法;两个哈希函数,其中一个计算步长;
表的容量为质数:不会出现因为步长是数组长度的因数而出现的无限循环;最大装填因子应该在0.5附近;
* 链地址法;
* Horner方法中用多项式表达哈希话,每一步中都应用取模操作服,以免发生溢出;