408——数据结构 第六章 查找

在这里插入图片描述
在这里插入图片描述

1. 查找的基本概念

查找 —— 在数据集合中寻找满⾜某种条件的数据元素的过程称为查找。
查找表(查找结构)—— ⽤于查找的数据集合称为查找表,它由同⼀类型的数据元素(或记录)组成。

静态查找表: 只需要查找操作。
动态查找表: 除了查找,还需要增/删数据元素。

关键字 —— 数据元素中唯⼀标识该元素的某个数据项的值,使⽤基于关键字的查找,查找结果应该是唯⼀的。
查找⻓度——在查找运算中,需要对⽐关键字的次数称为查找⻓度。
平均查找⻓度(ASL, Average Search Length )—— 所有查找过程中进⾏关键字的⽐较次数的平均值。

2. 顺序查找

顺序查找,⼜叫“线性查找”,通常⽤于线性表。
在这里插入图片描述
在这里插入图片描述

3. 折半查找

折半查找,⼜称“⼆分查找”,仅适⽤于有序顺序表
在这里插入图片描述
在这里插入图片描述

4. 分块查找

在这里插入图片描述

5. B树、B+树

B树

B树,⼜称多路平衡查找树,B树中所有结点的孩⼦个数的最⼤值称为B树的阶,通常⽤m表示。⼀棵m阶B树或为空树,或为满⾜如下特性的m叉树:
1)树中每个结点⾄多有m棵⼦树,即⾄多含有m-1个关键字。
2)若根结点不是终端结点,则⾄少有两棵⼦树。
3)除根结点外的所有⾮叶结点⾄少有 ⌈m/2⌉棵⼦树,即⾄少含有⌈m/2⌉ -1个关键字。
4)所有⾮叶结点的结构如下:
在这里插入图片描述
其中,Ki(i = 1, 2,…, n)为结点的关键字,且满⾜K1 < K2 <…< Kn;Pi(i = 0, 1,…, n)为指向⼦树根结点的指针,且指针Pi-1所指⼦树中所有结点的关键字均⼩于Ki,Pi所指⼦树中所有结点的关键字均⼤于Ki,n(⌈m/2⌉- 1≤n≤m - 1)为结点中关键字的个数。
5)所有的叶结点都出现在同⼀层次上,并且不带信息(可以视为外部结点或类似于折半查找判定树的查找失败结点,实际上这些结点不存在,指向这些结点的指针为空)。

m阶B树的核⼼特性:
1) 根节点的⼦树数∈[2, m],关键字数∈[1, m-1]。其他结点的⼦树数∈[⌈m/2⌉ , m];关键字数∈[ ⌈m/2⌉-1, m-1]
2)对任⼀结点,其所有⼦树⾼度都相同
3)关键字的值:⼦树0<关键字1<⼦树1<关键字2<⼦树2<…. (类⽐⼆叉查找树 左<中<右)
在这里插入图片描述

在这里插入图片描述
核⼼要求:
①对m阶B树——除根节点外,结点关键字个数⌈m/2⌉≤n≤m-1
②⼦树0<关键字1<⼦树1<关键字2<⼦树2<….

B+树

⼀棵m阶的B+树需满⾜下列条件:
1)每个分⽀结点最多有m棵⼦树(孩⼦结点)。
2)⾮叶根结点⾄少有两棵⼦树,其他每个分⽀结点⾄少有⌈m/2⌉棵⼦树。
3)结点的⼦树个数与关键字个数相等。
4)所有叶结点包含全部关键字及指向相应记录的指针,叶结点中将关键字按⼤⼩顺序排列,并且相邻叶结点按⼤⼩顺序相互链接起来。支持顺序查找
5)所有分⽀结点中仅包含它的各个⼦结点中关键字的最⼤值及指向其⼦结点的指针。

B+树 VS B树
m阶B+树:
1) 结点中的n个关键字对应n棵⼦树
2) 根节点的关键字数n∈[1, m],其他结点的关键字数n∈[⌈m/2⌉, m]
3)在B+树中,叶结点包含全部关键字,⾮叶结点中出现过的关键字也会出现在叶结点中
4)在B+树中,叶结点包含信息,所有⾮叶结点仅起索引作⽤,⾮叶结点中的每个索引项只含有对应⼦树的最⼤关键字和指向该⼦树的指针,不含有该关键字对应记录的存储地址。
m阶B树:
1) 结点中的n个关键字对应n+1棵⼦树
2)根节点的关键字数n∈[1, m-1]。其他结点的关键字数n∈[⌈m/2⌉-1, m-1]
3) 在B树中,各结点中包含的关键字是不重复的
4) B树的结点中都包含了关键字对应的记录的存储地址
在这里插入图片描述

6. 散列查找

散列表(Hash Table),⼜称哈希表。是⼀种数据结构,特点是:数据元素的关键字与其存储地址直接相关。
若不同的关键字通过散列函数映射到同⼀个值,则称它们为“同义词”,通过散列函数确定的位置已经存放了其他元素,则称这种情况为“冲突”。

处理冲突的⽅法——拉链法
在这里插入图片描述
在这里插入图片描述
处理冲突的⽅法——开放定址法
所谓开放定址法,是指可存放新表项的空闲地址既向它的同义词表项开放,⼜向它的⾮同义词表项开
放。其数学递推公式为:Hi = (H(key) + di) % m
i = 0, 1, 2,…, k(k≤m - 1),m表示散列表表⻓;di为增量序列;i 可理解为“第i次发⽣冲突”
①线性探测法—— di = 0, 1, 2, 3, …, m-1;即发⽣冲突时,每次往后探测相邻的下⼀个单元是否为空
采⽤“开放定址法”时,删除结点不能简单地将被删结点的空间置为空,否则将截断在它之后填⼊
散列表的同义词结点的查找路径,可以做⼀个“删除标记”,进⾏逻辑删除

②平⽅探测法。当di = 02, 12, -12, 22, -22, …, k2, -k2时,称为平⽅探测法,⼜称⼆次探测法其中k≤m/2
③伪随机序列法。di 是⼀个伪随机序列,如 di= 0, 5, 24, 11, …
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值