1
0
mirror of https://github.com/Didnelpsun/CS408.git synced 2026-02-13 15:45:58 +08:00
This commit is contained in:
Didnelpsun
2022-09-21 23:10:51 +08:00
parent 5371c10810
commit 7fc9a4b155
3 changed files with 38 additions and 12 deletions

View File

@@ -182,6 +182,12 @@ $D.$解决冲突的方法选择不当
解:$D$。聚集是因选取不当的处理冲突的方法,而导致不同关键字的元素对同一散列地址进行争夺的现象。用线性再探测法时,容易引发聚集现象。
### ASL
对于成功的长度往往是比较固定的,分子为关键字比较成功次数之和,分母为关键字数量。
对于失败的长度需要注意。分母为$MOD$的值,因为取余操作时只能取到$[0,MOD-1]$的范围,即使表长$L$再大也不可能映射到其他位置。
**例题** 现有长度为$11$且初始为空的散列表$HT$,散列函数是$H(key)=key\%7$,采用线性探查(线性探测再散列)法解决冲突。将关键字序列$87,40,30,6,11,22,98,20$依次插入$HT$后,$HT$查找失败的平均查找长度是()。
$A.4$

View File

@@ -610,7 +610,8 @@ AL(H) CL(H-1) CR(H) BR(H)
#### B树性质
+ 树的每个结点至多包含$m$棵子树,至多包含$m-1$个关键字。
+ 若根结点不是终端结点,则至少有两颗子树,任意结点的每棵子树都是绝对平衡的。所有结点的平衡因子均等于$0$的
+ 若根结点不是终端结点,则至少有两颗子树,有一个关键字
+ 任意结点的每棵子树都是绝对平衡的。所有结点的平衡因子均等于$0$的。
+ 除根结点以外的所有非叶结点至少有$\lceil\dfrac{m}{2}\rceil$棵子树,即至少包含$\lceil\dfrac{m}{2}\rceil-1$个结点。
+ 每个结点中的关键字是有序的。子树$0$<子树$1$<子树$2$<……。
+ 所有叶结点都出现在同一个层次上且不带信息。(可以视为外部结点或类似于折半查
@@ -684,24 +685,24 @@ $B$树的查找包含两个基本操作:
若被删除关键字在终端结点,但是结点关键字个数删除后低于下限:
+ 右兄弟够借:若原结点右兄弟结点里的关键字在删除一个后高于下限,则可以用结点的后继以及后继的后继来顶替:
1. 将原结点在父结点的连接的后一个关键字下移到原结点并放在最后面。
1. 将原结点在父结点的连接的后一个关键字(后继元素)下移到原结点并放在最后面。
2. 将原结点右兄弟结点的第一个关键字上移插入到下移的元素的空位。
3. 原结点右兄弟结点里的关键字全部前移一位。
+ 左兄弟够借:若原结点里右兄弟的关键字在删除一个后低于下限,但是左兄弟的结点足够,则可以用结点的前驱以及前驱的前驱来顶替:
1. 将原结点在父结点的连接的前一个关键字下移到原结点并放在最前面,其余元素后移。
1. 将原结点在父结点的连接的前一个关键字(前驱元素)下移到原结点并放在最前面,其余元素后移。
2. 将原结点左兄弟结点的最后一个关键字上移插入到原结点父结点的连接的前面。
3. 原结点左兄弟结点里的关键字全部前移一位。
+ 左右兄弟都不够借:若左右兄弟结点的关键字个数均等于下限值,则将关键字删除后与左或右兄弟结点以及父结点中的关键字进行合并:
1. 将原结点的父结点连接后的关键字插入到原结点关键字最后面。
2. 将原结点的左或右兄弟结点的关键字合并到原结点(前插或后插),并将连接也转移到原结点上。
3. 若父结点的关键字个数又不满于下限,则父结点同样要于与它的兄弟父结点进行合并,并不断重复这个过程。
4. 若父结点为空则删除父结点。
4. 若父结点为空则删除父结点。(兄弟合并,父亲下沉)
### B+树
$B+$树考的并不是很深。用于数据库。
与分块查找的思想类似,是对$B$树的一种变型。
与分块查找的思想类似,是对$B$树的一种变型,多用于索引结构
#### B+树定义

File diff suppressed because one or more lines are too long