散列表:

image.png
image.png

image.png

散列表的构建:

image.png
image.png
小优化
image.png

散列表的查找:

查找成功:

image.png
查找长度为3

查找失败:

image.png
在数组中存放的是指针,指针为空则不用进行比较,故查找长度为0
image.png

平均查找长度:

image.png
image.png

image.png

常见的散列函数:

除留余数法:

image.png
image.png

直接定址法:

image.png
image.png

数字分析法:

image.png
image.png

平方取中法:

image.png

处理冲突:

拉链法:

见上

开放定址法:

image.png
注意:m是散列表表长,不要和散列函数中的除留余数法的p混淆
image.png

线性探测法:

image.png
image.png

存入操作:

存1:
image.png
image.png
存68,20:
image.png
存84:
image.png
image.png
存27:
image.png
image.png
存55:
image.png
image.png
存11:
image.png
存10:
image.png
image.png
存79:
image.png
image.png
存25:
image.png
image.png

查找操作:

查找成功

image.png
image.png

查找失败

image.png
image.png

删除操作:

image.png
image.png

查找效率分析(ASL):

查找成功:
image.png

查找失败:

image.png
image.png

平方探测法:

image.png
image.png(原因看数论)
image.png

存入操作:

image.png

image.png
image.png

查找操作:

image.png
按照探测序列依次对比

伪随机序列法:

image.png
image.png

image.png

再散列法:

image.png

总结:

image.png