《数据结构》王道 第七章 查找
1. 查找的基本概念
1.1 基本概念
1.2 算法的评价指标
查找成功的情况下:
查找失败的情况下:
2. 顺序查找
2.1 算法思想
2.2 算法实现
2.2.1 常规顺序查找
2.2.2 带哨兵的顺序查找
优点:无需判断是否越界。
2.3 效率分析
2.4 优化
2.4.1 对有序表
当查找到比查找目标大的元素之后,还没有找到查找目标的话,就不需要再往后查找了,说明表中没有想要查找的目标,查找失败。
2.4.2 被查概率不相等
3. 折半查找
3.1 算法思想
3.2 算法实现
3.3 查找效率分析
以此类推:
3.3.1 判定树的构造
3.4 拓展思考
4. 分块查找
4.1 算法思想
4.1.1 用折半查找查索引
这种是查找目标刚好是索引上有的元素:
如果查找目标是索引上没有的元素的话,对于查找目标,对索引进行一次折半查找:
当查找目标大于索引中的任何一个时,则查找失败:
4.2 查找效率分析
4.2.1 顺序查找查索引表
4.2.2 折半查找查索引表
4.3 拓展思考
5. 二叉排序树(BST)
5.1 二叉排序树的定义
5.2 二叉排序树的查找
5.3 二叉排序树的插入
5.4 二叉排序树的构造
5.5 二叉排序树的删除
5.5.1 删除结点是叶节点
5.5.2 删除结点是一颗左子树或右子树
5.5.3 删除结点有左右两颗子树
5.6 查找效率分析
6. 平衡二叉树(AVL)
6.1 定义
6.2 插入操作
6.2.1 调整最小不平衡子树
1. LL
2. RR
3. LR
4. RL
6.2.2 为什么每次调整的都是“最小不平衡子树"
6.2.3 练习
6.6 查找效率分析
6.3 删除操作
6.3.1 例1
6.3.2 例2
删除 55
没有出现不平衡向上传导的现象,所以结束。
6.3.3 例3
删除 32
没有导致出现不平衡向上传导的现象,所以算法结束。
6.3.4 例4
6.3.5 例5
可以用前驱也可以用后继,这里先选择用前驱来顶替。
6.3.6 例6
用后继顶替:
如果选择95:
如果选择85:
7. 红黑树(RBT)
7.1 定义和性质
7.1.1 定义
7.1.2 练习
7.1.3 黑高
7.1.4 性质
7.2 插入操作
当把“爷变为新结点”后,还需要继续按照红黑树的定义进行判断和调整。
其余情况都类似,就不赘述了。
7.1 与“黑高”相关的推论
内部结点不包括叶子结点,即NULL那些结点。
7.3 删除操作(考的概率不大)
8. B树
8.1 B树的概念和特性
8.1.1 查找
8.1.2 如何保证查找效率
8.1.3 B树的特性
8.1.4 B树的高度
求最大高度的一种方法:
另一种方法:
8.2 插入和删除
8.2.1 插入
8.2.2 删除
8.3 B+树
8.3.1 查找
也可以采用p指针继续顺序查找:
8.3.2 B+树 VS B树
注意是“结点中”。
9. 散列查找
9.1 散列表
9.1.1 处理冲突的方法——拉链法
9.2 查找
9.3 常见的散列函数
9.3.1 除留余数法
9.3.2 直接定址法
9.3.3 数学分析法
9.3.4 平方取中法
9.4 处理冲突的方法
9.4.1 拉链法
9.4.2 开放定址法
1. 线性探测法(常考)
以此类推
查找操作
删除操作
查找效率分析
缺点
2. 平方探测法
查找操作
3. 伪随机序列法
9.4.3 再散列法