数据结构_第9讲 查找

第9讲 查找

1.查找的基本概念

(1) 平均查找长度 ASL = 每个元素 查找概率 * 找到第i个元素需要进行的比较次数 的和。

(2) 决策树(判定树)

image-20210820222430726

2.顺序查找法

(1) 一般线性表的顺序查找
a. 若每个元素查找概率相同,则 ASL(成功) = ( 1 + 2 + . . . + n ) / n = ( n + 1 ) / 2 (1 + 2 + ... + n) / n = (n + 1) / 2 (1+2+...+n)/n=(n+1)/2
b. ASL(失败) = n 或 n+1 (取决于代码写法、比较n次)

image-20210806181610225

(2) 有序表的顺序查找
a. 若每个元素查找概率相同,则 ASL(成功) = ( 1 + 2 + . . . + n ) / n = ( n + 1 ) / 2 (1 + 2 + ... + n) / n = (n + 1) / 2 (1+2+...+n)/n=(n+1)/2
b. ASL(失败) = ( 1 + 2 + . . . + n + n ) / ( n + 1 ) = n / 2 + n / ( n + 1 ) (1 + 2 + ... + n + n) / (n + 1) = n / 2 + n / (n + 1) (1+2+...+n+n)/(n+1)=n/2+n/(n+1)

ASL

n+1 个分支

image-20210806182305603

3.折半查找法

前提:序列有序

一致性:

全下取整( m i d = ( l o w + h i g h ) / 2 mid= (low+high)/2 mid=(low+high)/2)或全上取整( m i d = ( l o w + h i g h + 1 ) / 2 mid= (low+high+1)/2 mid=(low+high+1)/2)。

笔试中一般要求画决策树 (注意是上取整还是下取整)

(1) ASL(成功) = l o g ( n + 1 ) − 1 log(n + 1) - 1 log(n+1)1

image-20210806183305034

4.分块查找法

设共n个元素,每块s个元素,共b = n / s块。块内无序块间有序
(1) 顺序查找确定块:ASL(成功) = ( s 2 + 2 s + n ) / ( 2 s ) (s^2 + 2s + n) / (2s) (s2+2s+n)/(2s),s = sqrt(n)时取最小值

image-20210806184128072

极值:$s=n/s $ 1 + s q r t ( n ) 1+sqrt(n) 1+sqrt(n)

(2) 二分查找确定块:log(n/s + 1) + (s - 1)/2

l o g ( n / s + 1 ) − 1 + ( s + 1 ) / 2 log(n/s + 1) - 1 + (s+1)/2 log(n/s+1)1+(s+1)/2

$=log(n/s + 1) + (s - 1)/2 $

5.B树及其基本操作、B+树及其基本概念

文件or硬盘(读写慢)

文件系统的管理、数据库

几十GB 可能用 B树存储

了解操作方式即可,BST 的扩展

分支多,层数低1

B+树: 所有信息全存在叶节点。

image-20210806194657152

(1) B树
[1] m阶B树,每个节点最多有m个孩子。
[2] 每个节点最多有m-1个关键字(可以存有的键值对)。
[3] 根节点最少可以只有1个关键字。
[4] 非根节点至少有m/2个关键字。(一般下取整)
[5] 每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。
[6] 所有叶子节点都位于同一层,或者说根节点到每个叶子节点的长度都相同。
[7] 每个节点都存有索引和数据,也就是对应的key和value。
[8] 所以,根节点的关键字数量范围: 1 < = k < = m − 1 1 <= k <= m-1 1<=k<=m1,非根节点的关键字数量范围: m / 2 < = k < = m − 1 m/2 <= k <= m-1 m/2<=k<=m1
(2) B+树
[1] B+跟B树不同B+树的非叶子节点不保存关键字记录的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加;
[2] B+树叶子节点保存了父节点的所有关键字记录的指针,所有数据地址必须要到叶子节点才能获取到。所以每次数据查询的次数都一样;
[3] B+树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针。
(3) 参考链接:https://blog.csdn.net/Fmuma/article/details/80287924

6.考题:2011-42、2012-9、2013-10、2013-42、2014-9、2015-7、2016-9、2016-10、2017-8、2017-9、2018-8、2020-10

2011-42

2012-9

2013-10

2013-42

2014-9

2015-7

2016-9

2016-10

2017-8

2017-9

2018-8

2020-10

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值