七、查找
查找表:由同一类型的数据元素(或记录)构成的集合。
静态查找表
静态查找是指在静态查找表上进行的查找操作,在查找表中满足条件的数据元素的存储位置或各种属性。静态查找表的查找算法主要有:顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k进行比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。
折半查找:对给定值k,逐步确定待查记录所在区间,每次将搜索空间减少一半,直到查找成功或失败为止。
分块查找:
动态查找表:表结构在查找过程中动态生成的这样一种查找表。实现动态查找方法:二叉排序树、平衡二叉树、B-树和B+树。
二叉排序树
定义:左子树的所有结点均小于根的值;右子树的所有节点均大于根的值;它的左右子树也分别为二叉排序树。

二叉排序树插入新节点递归算法:
二叉排序树删除结点的算法:
二叉排序树查找算法分析:
平衡二叉树
平衡二叉树又称为AVL树,设二叉树中结点的左子树和右子树的深度分别为HL和HR。





B-树:
http://haicang.blog.51cto.com/2590303/1134864
B-树又称基本B树或多路平衡查找树。它是构造大型文件系统索引结构的一种数据结构类型,适合在磁盘等直接存取设备上组织动态的查找表。
B-树的查找算法思路:


B-树的查找效率取决于以下两个因素:包含k的结点在B-树种所在的层数h;结点中ki的个数n。
B-树的生成:
B-树的删除:
- B+树是B-树的变形,目的在于有效地组织文件的索引结构。
- m阶B+树与B-树的差异:
B+树种可以有两种查找方式:顺序查找——类似单链表的查找,直接在数据层进行查找。随机查找——类似B-树的查找,不同的是搜索到索引层的key与k相等时,还得继续搜索下去,直到数据层为止。
哈希表

- 将不同的关键码映射到同一个哈希地址上,该现象称为冲突。
- 哈希函数的构造方法
- 常用的哈希函数构造方法有:直接定址法、除留余数法、乘余取整法、数字分析法、平方取中法、折叠法、随机数法。
- 直接定址法:


数字分析法:
平方取中法:
叠加法:
随机数法:
- 处理冲突的方法
- 开放定址法、链地址法、再哈希法、建立一个公共溢出区
- 开放定址法:
链地址法:
再哈希法:
建立一个公共溢出区:
- 红黑树
- 1.红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。


全部评论