查找的基本概念
顺序查找
无序查找
顺序查找
折半查找
分块查找
B树
插入
没有破坏结构的情况
叶结点删除
直接删除
兄弟够借
兄弟不够借
分支结点删除
B+树
B树与B+树的比较
查找方式
散列表(哈希表)
散列函数的构造方法
直接定值法
除留取余法
数字分析法
平方取中法
折叠法
冲突避免
开放定址法
增量计算方法
拉链法
查找
总结
真题
2019:采用线性探测法,计算可能是失败的长度,如果哈希函数为对n取余,则写出所有数字应该对应的位置,然后每个元素开始查找,直到查完所有的元素为止,比如如果有8个数,分别放在0-7号位置,查找0号元素的失败长度就是从0开始遍历,到8号位置,也就是遍历9次,查找失败的长度为9,所有元素的平均查找长度就是(9+8+7+6+5+4+3)/7=6(最后一个数不用查)
2018: 除根节点以外的非叶结点都有m/2去下界-1个关键字,高度为5的3阶B树含有的关键字个数至少有31个,3/2取上界-1等于1,每个非叶结点至少有1个关键字,所以这个二叉树就是一颗满二叉树有31个结点。
2015:折半查找比较结点序列构成的二叉排序树, 每个结点的度为1(每个结点只有个孩子或者二叉排序树为一根线)500,200,450,180构成的二叉排序树在200结点下有两个孩子所以不是二叉排序树的比较结点序列
2014, b树的关键字最小为m/2取上界限-1.
2011:散列表填装因子是元素和表长的比例,散列因子越大查找效率越低(因为发生冲突的概率也越大)
2010:平均查找成功长度,是通过查找元素,如果元素在对应的哈希函数指里面则长度为1,若不是往下依次查找知道查找到正确的值为止(查找成功的长度其实就是线性探测后移的长度)如哈希表7.8.30.11.18.9.14采用哈希函数H(key)=(key x 3)%3处理冲突采用线性探测
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
7 | 14 | 8 | 11 | 30 | 18 | 9 |
查找成功的长度就是就是线性探测的长度 其中7.8.30.11的长度都是1没有发生冲突,18后移了2位长度为3,9后移了2位长度为3,14后移了一位长度为2,所以查找成功的长度是(1+1+1+1+3+3+2)/7=12/7
查找失败的平均长度是根据哈希表中的元素个数计算的,每个位置的元素可能出现在它后面的任意非空位置,所以查找失败的长度就是查找完从当前位置开始到第一个非零位置的长度,如上表,0号位置中的元素可能出现在0,1,2号位置中,所以要查找3次才能知道查找失败,1号位置的元素可能出现在1,2号位置中所以要查找2次,2号位置为空只需查找自己1次,3号元素查找2次,4号一次,5号元素查找5次(5,6,7,8,9),6号元素查找4次,7号元素查找3次,长度相加求平均数就是(3+2+1+2+1+5+4)/7=18/7