数据结构之查找
七、查找
- 概述
- 查找表:由同一类型的数据元素(或记录)构成的集合。
-
-
- 静态查找表
- 静态查找是指在静态查找表上进行的查找操作,在查找表中满足条件的数据元素的存储位置或各种属性。静态查找表的查找算法主要有:
- 顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描到的关键字和给定值k进行比较,若当前扫描到的关键字与k相等,则查找成功;若扫描结束后,仍未找到关键字等于k的记录,则查找失败。
- 折半查找:对给定值k,逐步确定待查记录所在区间,每次将搜索空间减少一半,直到查找成功或失败为止。
- 分块查找:
- 动态查找表:表结构在查找过程中动态生成的这样一种查找表。实现动态查找方法:二叉排序树、平衡二叉树、B-树和B+树。
- 二叉排序树
- 定义:左子树的所有结点均小于根的值;右子树的所有节点均大于根的值;它的左右子树也分别为二叉排序树。
- 二叉排序树插入新结点的过程:
- 二叉排序树插入新节点递归算法:
-
- 二叉排序树删除结点的算法:
- 二叉排序树查找算法分析:
- 平衡二叉树
- 平衡二叉树又称为AVL树,设二叉树中结点的左子树和右子树的深度分别为HL和HR。
-
- 若在构造二叉排序树的同时,使其始终保持为AVL树,则此时的二叉排序树为平衡的二叉排序树。将一棵非平衡二叉排序树调整成平衡二叉排序树的“旋转”,分为:LL平衡旋转、RR平衡旋转、LR平衡旋转、RL平衡旋转。
-
- B-树又称基本B树或多路平衡查找树。它是构造大型文件系统索引结构的一种数据结构类型,适合在磁盘等直接存取设备上组织动态的查找表。
-
-
- B-树的查找算法思路:
- B-树的查找效率取决于以下两个因素:包含k的结点在B-树种所在的层数h;结点中ki的个数n。
- B-树的生成:
- B-树的删除:
- B+树
- B+树是B-树的变形,目的在于有效地组织文件的索引结构。
- m阶B+树与B-树的差异:
-
- B+树种可以有两种查找方式:顺序查找——类似单链表的查找,直接在数据层进行查找。随机查找——类似B-树的查找,不同的是搜索到索引层的key与k相等时,还得继续搜索下去,直到数据层为止。
-
- 哈希表
-
- 哈希表,根据设定的哈希函数H(key)和处理冲突的方法将一组关键字key映射到一个有限的连续的地址集上,并以关键字key在地址集中的“像”作为记录在表中的存储位置,这种表便称为哈希表,这一映射过程称为哈希造表或散列,所得存储位置称哈希地址或散列地址。
- 将不同的关键码映射到同一个哈希地址上,该现象称为冲突。
- 哈希函数的构造方法
- 常用的哈希函数构造方法有:直接定址法、除留余数法、乘余取整法、数字分析法、平方取中法、折叠法、随机数法。
- 直接定址法:
- 除留余数法:
- 乘余取整法:
- 数字分析法:
- 平方取中法:
- 叠加法:
- 随机数法:
- 处理冲突的方法
- 开放定址法、链地址法、再哈希法、建立一个公共溢出区
- 开放定址法:
- 链地址法:
- 再哈希法:
- 建立一个公共溢出区:
- 红黑树
- 红黑树,一种二叉查找树,但在每个结点上增加一个存储位表示结点颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接*衡的。
- 红黑树虽然本质上是一棵二叉查找树,但它在二叉查找树的基础上增加了着色和相关的性质使得红黑树相对平衡,从而保证了红黑树的查找、插入、删除的时间复杂度最坏为O(log n)。红黑树和AVL树的区别在于它使用颜色来标识结点的高度,它所追求的是局部平衡而不是AVL树中的非常严格的平衡。
- 红黑树的五个性质保证了红黑树的高度始终保持在logn:
- 红黑树的旋转操作:红黑树的旋转操作和AVL树一样,分为LL、RR、LR、RL四种旋转类型,差别在于旋转完成后改变的是结点的颜色,而不是平衡因子。
- 红黑树的插入和删除:http://blog.****.net/eric491179912/article/details/6179908
作者:龙猫小爷
链接:http://www.jianshu.com/p/2469a4d9708e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。