数据结构与算法-北大 HW11 B_B+树
北京市考研计算机科学与技术复习资料数据结构重要知识点归纳
![北京市考研计算机科学与技术复习资料数据结构重要知识点归纳](https://img.taocdn.com/s3/m/ebdc774453ea551810a6f524ccbff121dc36c55d.png)
北京市考研计算机科学与技术复习资料数据结构重要知识点归纳数据结构是计算机科学与技术中的重要知识点,对于考研的学生来说,熟练掌握数据结构的理论和应用是非常关键的。
本文将为大家整理归纳北京市考研计算机科学与技术复习资料中的数据结构重要知识点,希望对考生们的复习提供参考。
本文将分为以下几个部分进行阐述。
一、线性表1.1 顺序表:顺序存储结构、插入和删除操作、顺序表的基本运算。
1.2 链表:链式存储结构、单链表、双链表、循环链表、链表的插入和删除操作、链表的基本运算。
二、树2.1 二叉树:二叉树的定义、二叉树的性质、二叉树的遍历算法(前序、中序、后序)、二叉排序树。
2.2 平衡二叉树:平衡二叉树的定义、平衡二叉树的调整策略、红黑树。
2.3 B树:B树的定义、B树的插入和删除操作、B+树。
三、图3.1 图的存储结构:邻接矩阵、邻接表、十字链表。
3.2 图的遍历算法:深度优先搜索(DFS)、广度优先搜索(BFS)。
3.3 最小生成树:Prim算法、Kruskal算法。
3.4 最短路径:Dijkstra算法、Floyd算法。
四、排序与查找4.1 内部排序:插入排序、选择排序、冒泡排序、希尔排序、快速排序、归并排序、堆排序。
4.2 外部排序:多路归并排序。
4.3 查找算法:二分查找、哈希查找。
五、其他重要知识点5.1 哈夫曼编码:哈夫曼编码的思想、哈夫曼树的构建、编码和译码过程。
5.2 搜索树:二叉搜索树、平衡二叉搜索树、B树。
5.3 线索二叉树:线索二叉树的定义、中序线索二叉树的构建与遍历。
5.4 排序算法的稳定性和时间复杂度分析。
以上是本文对于北京市考研计算机科学与技术复习资料中的数据结构重要知识点的归纳总结。
考生们在复习过程中,可以按照这些知识点有序地进行学习和理解,并通过大量的练习题提高自己的应用能力。
希望考生们能够充分掌握数据结构的理论知识,提高解题能力,在考试中取得好成绩。
祝愿大家顺利通过考研!。
数据结构与算法
![数据结构与算法](https://img.taocdn.com/s3/m/eb748588b1717fd5360cba1aa8114431b90d8ee5.png)
数据结构与算法数据结构与算法是北京大学于2018年02月26日首次在中国大学MOOC开设的慕课课程,是国家精品在线开放课程。
该课程授课教师为张铭、陈斌、卢宗青、刘云淮、赵海燕、宋国杰、黄骏、邹磊、王腾蛟。
据2021年2月中国大学MOOC官网显示,该课程已开课4次。
数据结构与算法课程内容包括数据结构与抽象数据类型、算法特性及分类、算法效率与度量、线性结构、顺序表、链表、栈与队列、栈与递归、递归转非递归、字符串的存储结构、字符串运算的算法实现、字符串的快速模式匹配、二叉树的抽象数据类型、二叉树的搜索、二叉树的存储结构、树与二叉树的等价转换、树的抽象数据类型及树的遍历、树的链式存储结构、树的父指针表示法、树的顺序存储和K叉树、图的概念和抽象数据类型、图的存储结构、图的遍历、内排序、检索等内容。
课程性质:课程背景计算机是现代社会中用于解决问题的重要工具,支撑这个工具高效运转的就是其后的各种系统程序、应用程序。
数据结构,是抽象的表示数据的方式;算法,则是计算的一系列有效、通用的步骤。
算法与数据结构是程序设计中相辅相成的两个方面,是计算机学科的重要基石。
课程定位数据结构与算法是介绍基本数据结构以及相关的经典算法,强调问题-数据-算法的抽象过程,关注数据结构与算法的时间空间效率,培养学生编写出高效程序从而解决实际问题的综合能力的一门课程。
适应对象数据结构与算法适合计算机以及相关理工专业的本科生学习。
对于具有C语言结构化程序设计基础的学生,该课程第0章补充了一些面向对象的基本内容。
课程简介:数据结构与算法围绕着“算法+数据结构=程序”的思路,以问题求解为导向进行学习,运用问题抽象、数据抽象、算法抽象来分析问题,应用适当的数据结构和算法来设计和实现相应的程序。
在求解实际问题方面,该课程会学习到通过权衡时空和其他资源开销,利用数据结构来组织数据、设计高效的算法、完成高质量的程序以满足错综复杂的实际应用需要。
课程所学到的内容会被利用到计算机科学后续的各个课程中,如操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等。
数据结构树知识点总结图
![数据结构树知识点总结图](https://img.taocdn.com/s3/m/86c5b439f342336c1eb91a37f111f18582d00c69.png)
数据结构树知识点总结图一、树的定义树是一种抽象的数据结构,它是由n(n≥0)个节点组成的有限集合,其中一个节点被指定为根节点,其他节点被划分为m(m≥0)个互不相交的子集T1、T2、...、Tm,每个子集本身又是一棵树。
树的定义可以用递归方式来描述,即树是由一个根节点和若干颗子树组成的。
其中,根节点没有父节点,每个子树的根节点都是父节点的孩子节点。
二、树的特点1. 树是一种层次结构:树中的节点可以分层次地组织,也就是包含父子关系。
根节点是树的第一层,它的子节点是树的第二层,以此类推。
2. 树是一种非线性结构:树中的节点之间的关系是非线性的,每个节点可以有多个子节点,但只有一个父节点。
3. 树是一种递归结构:树的定义中包含了对子树的定义,因此树是一种递归结构,通过递归的方式可以方便地对树进行操作。
4. 树是一种有序结构:树中的节点之间存在明确定义的顺序关系,因此可以用来表示有序集合。
三、树的基本操作1. 树的创建:创建一棵树需要先创建根节点,然后在根节点上添加子节点,逐层递归地创建子树。
2. 树的遍历:树的遍历是指按照一定顺序访问树中的每个节点,常见的遍历方式包括前序遍历、中序遍历、后序遍历和层序遍历。
3. 树的查找:树的查找是指在树中查找指定的节点,包括广度优先搜索(BFS)和深度优先搜索(DFS)两种方式。
4. 树的插入:树的插入是指将新节点插入到树中的指定位置,可以在根节点或指定节点的子节点上进行插入操作。
5. 树的删除:树的删除是指将指定节点从树中删除,可以删除叶子节点、中间节点或整棵子树。
6. 树的修改:树的修改是指对树中的节点进行数值或结构的改变,包括修改节点的值、替换子树等操作。
四、常见类型的树1. 二叉树(Binary Tree):每个节点最多含有两个子节点的树,包括普通二叉树、满二叉树和完全二叉树等。
2. 平衡二叉树(Balanced Binary Tree):每个节点的左子树和右子树的高度差不超过1的二叉树。
数据结构树知识点总结大全
![数据结构树知识点总结大全](https://img.taocdn.com/s3/m/87a7371aac02de80d4d8d15abe23482fb5da0269.png)
数据结构树知识点总结大全本文将对树结构的知识点进行详细的总结,包括树的基本概念、树的分类、树的遍历、树的应用以及一些相关的算法和数据结构。
通过本文的学习,读者将对树结构有一个全面的了解,并可以在实际的编程和问题解决中灵活运用树结构。
一、树的基本概念1.1 节点和边1.2 根节点、叶子节点和内部节点1.3 子树和森林1.4 高度和深度1.5 有序树和无序树1.6 二叉树二、树的分类2.1 二叉搜索树2.2 平衡二叉树2.3 B树和B+树2.4 红黑树2.5 AVL树2.6 Trie树2.7 堆和堆排序2.8 Huffman树2.9 伸展树2.10 Splay树三、树的遍历3.1 深度优先遍历3.1.1 前序遍历3.1.2 中序遍历3.1.3 后序遍历3.2 广度优先遍历四、树的应用4.1 数据库索引4.2 文件系统4.3 图形学中的场景图4.4 解析树4.5 代码优化4.6 线段树4.7 树状数组4.8 字典树4.9 贝叶斯分类器中的朴素贝叶斯算法五、树的相关算法和数据结构5.1 查找5.1.1 二叉搜索树的插入和删除5.1.2 二叉搜索树的查找5.1.3 递归查找和非递归查找5.2 排序5.2.1 二叉搜索树的中序遍历5.2.2 堆排序5.2.3 AVL树的平衡调整5.2.4 红黑树的插入和删除5.3 最短路径5.3.1 二叉堆的应用5.3.2 AVL树的应用5.4 动态规划5.4.1 线段树的应用5.4.2 树状数组的应用六、结语树结构是数据结构中非常重要的一部分,它有着广泛的应用领域。
通过本文的学习,读者可以对树结构有一个全面的了解,并可以在实际的编程和问题解决中灵活运用树结构。
希望本文对读者有所帮助,也希望读者可以通过学习树结构,提高自己在算法和数据结构方面的能力,为未来的编程之路打下坚实的基础。
B树、B-树、B+树、B树 介绍、比较与小结
![B树、B-树、B+树、B树 介绍、比较与小结](https://img.taocdn.com/s3/m/40bfd127ccbff121dd368319.png)
B树、B-树、B+树、B树介绍、比较与小结(转载)B树即二叉搜索树:1. 所有非叶子结点至多拥有两个儿子(Left和Right);2. 所有结点存储一个关键字;3. 非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如:B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子;如果比结点关键字大,就进入右儿子;如果左儿子或右儿子的指针为空,则报告找不到相应的关键字;如果B树的所有非叶子结点的左右子树的结点数目均保持差不多(平衡),那么B树的搜索性能逼近二分查找;但它比连续内存空间的二分查找的优点是,改变B树结构(插入与删除结点)不需要移动大段的内存数据,甚至通常是常数开销;如:但B树在经过多次插入与删除后,有可能导致不同的结构:右边也是一个B树,但它的搜索性能已经是线性的了;同样的关键字集合有可能导致不同的树结构索引;所以,使用B树还要考虑尽可能让B树保持左图的结构,和避免右图的结构,也就是所谓的“平衡”问题;实际使用的B树都是在原B树的基础上加上平衡算法,即“平衡二叉树”;如何保持B树结点分布均匀的平衡算法是平衡二叉树的关键;平衡算法是一种在B树中插入和删除结点的策略;B-树是一种多路搜索树(并不是二叉的):1. 定义任意非叶子结点最多只有M个儿子;且M>2;2. 根结点的儿子数为[2, M];3. 除根结点以外的非叶子结点的儿子数为[M/2, M];4. 每个结点存放至少M/2-1(取上整)和至多M-1个关键字(至少2个关键字);5. 非叶子结点的关键字个数=指向儿子的指针个数-1;6. 非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];7. 非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树;8. 所有叶子结点位于同一层;如(M=3):B-树的搜索,从根结点开始,对结点内的关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围的儿子结点;重复,直到所对应的儿子指针为空,或已经是叶子结点;B-树的特性:1. 关键字集合分布在整颗树中;2. 任何一个关键字出现且只出现在一个结点中;3. 搜索有可能在非叶子结点结束;4. 其搜索性能等价于在关键字全集内做一次二分查找;5. 自动层次控制;由于限制了除根结点以外的非叶子结点,至少含有M/2个儿子,确保了结点的至少利用率,其最底搜索性能为:其中,M为设定的非叶子结点最多子树个数,N为关键字总数;所以B-树的性能总是等价于二分查找(与M值无关),也就没有B树平衡的问题;由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点;删除结点时,需将两个不足M/2的兄弟结点合并;B+树B+树是B-树的变体,也是一种多路搜索树:1. 其定义基本与B-树同,除了:2. 非叶子结点的子树指针与关键字个数相同;3. 非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间);5. 为所有叶子结点增加一个链指针;6. 所有关键字都在叶子结点出现;如(M=3):B+的搜索与B-树也基本相同,区别是B+树只有达到叶子结点才命中(B-树可以在非叶子结点命中),其性能也等价于在关键字全集做一次二分查找;B+的特性:1. 所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;2. 不可能在非叶子结点命中;3. 非叶子结点相当于是叶子结点的索引(稀疏索引),叶子结点相当于是存储(关键字)数据的数据层;4. 更适合文件索引系统;B*树是B+树的变体,在B+树的非根和非叶子结点再增加指向兄弟的指针:B*树定义了非叶子结点关键字个数至少为(2/3)*M,即块的最低使用率为2/3(代替B+树的1/2);B+树的分裂:当一个结点满时,分配一个新的结点,并将原结点中1/2的数据复制到新结点,最后在父结点中增加新结点的指针;B+树的分裂只影响原结点和父结点,而不会影响兄弟结点,所以它不需要指向兄弟的指针;B*树的分裂:当一个结点满时,如果它的下一个兄弟结点未满,那么将一部分数据移到兄弟结点中,再在原结点插入关键字,最后修改父结点中兄弟结点的关键字(因为兄弟结点的关键字范围改变了);如果兄弟也满了,则在原结点与兄弟结点之间增加新结点,并各复制1/3的数据到新结点,最后在父结点增加新结点的指针;所以,B*树分配新结点的概率比B+树要低,空间使用率更高;小结B树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点;B-树:多路搜索树,每个结点存储M/2到M个关键字,非叶子结点存储指向关键字范围的子结点;所有关键字在整颗树中出现,且只出现一次,非叶子结点可以命中;B+树:在B-树基础上,为叶子结点增加链表指针,所有关键字都在叶子结点中出现,非叶子结点作为叶子结点的索引;B+树总是到叶子结点才命中;B*树:在B+树基础上,为非叶子结点也增加链表指针,将结点的最低利用率从1/2提高到2/3;。
北京大学数据结构与算法2016-2017数据结构期末考试题试卷答案版
![北京大学数据结构与算法2016-2017数据结构期末考试题试卷答案版](https://img.taocdn.com/s3/m/0009887150e2524de5187ec7.png)
2) 下一记录放到第 11 个槽和第 7 个槽中的概率分别是多少? 下一条记录放在第 11 个槽中的概率是 2/13 放到第 7 个槽中的概率是 9/13
学校倡议所有考生以北京大学学生的荣誉与诚信答卷,共同维护北京大 学的学术声誉。
以下为试题和答题纸,共 页。
得分 一、选择填空题(每空 1 分,共 11 分)(答案写在答题纸上)
1. G 是一个非连通无向图,共有 21 条边,则图 G 至少有 8 个顶点。 2. 对于一个包含 N(N>1)个顶点的图,假定任意两点间最多只有一条边,
7. A[N][N]是对称矩阵,现将下三角矩阵按行存储到一维数组 T[N(N+1)/2]中
(包括对角线),则对任一上三角元素 A[i][j]其对应值(0 <= i <= j < N)在
T[k]中的下标 k 是 j(j+1)/2+i
。
8. 在一棵空 AVL 树中,顺序插入如下关键码:{5, 9, 4, 2, 1, 3, 8},请问全部 插入后,在等概率下查找成功的平均检索长度为 17/7 。
9. 已知广义表 C=(c, (d, A), B, e),则广义表 C 的深度为 2
,
tail(head(tail(C)))的运算结果为 (A) 。
得分 二、简答辨析题(每题 3 分,共 15 分)
1. 如果要找出一个具有 n 个元素集合中的第 k (1≤k≤n)个最小元素,所学过的 排序方法中哪种最适合?给出实现的基本思想。 答案:在具有 n 个元素的集合中找第 k 个最小元素,应使用快速排序算法。 其基本思想如下:设 n 个元素的集合用一维数组表示,其第一个元素的下 标为 1,最后一个元素下标为 n。以第一个元素为“枢轴”,经过快速排序的 一次划分,找到“枢轴”的位置 i,若 i = k,则该位置的元素下标为 n;若 i > k 则在 1 至 i-1 间继续进行快速排序的划分;若 i < k 则在 i+1 至 n 间继续 进行快速排序的划分。这种划分一直进行到 i = k 为止,第 i 位置上的元素 就是第 k 个最小元素。
北京林业大学《数据结构与算法》课件PPT 第5章 树和二叉树
![北京林业大学《数据结构与算法》课件PPT 第5章 树和二叉树](https://img.taocdn.com/s3/m/1d3c52f0b4daa58da0114afb.png)
北京林业大学信息学院
A BC DE
先序遍历:A B D E C 中序遍历:D B E A C 后序遍历:D E B C A
口诀: DLR—先序遍历,即先根再左再右 LDR—中序遍历,即先左再根再右 LRD—后序遍历,即先左再右再根
北京林业大学信息学院
用二叉树表示算术表达式
+
*
E
*
D
/
C
A
B
北京林业大学信息学院
叉树。(特点:每层都 “充满”了结点)
完全二叉树:深度为k 的, 有n个结点的二叉树,当且
仅当其每一个结点都与深度
为k 的满二叉树中编号从1 至n的结点一一对应
北京林业大学信息学院
满二叉树和完全二叉树的区别
满二叉树是叶子一个也不少的树,而完全二叉树虽然 前n-1层是满的,但最底层却允许在右边缺少连续若 干个结点。满二叉树是完全二叉树的一个特例。
ADT BinaryTree{
数据对象D: D是具有相同特性的数据元素的集合。
数据关系R: 若D=Φ,则R= Φ ;
若D≠Φ,则R= {H};存在二元关系:
① root 唯一 //关于根的说明
② Dj∩Dk= Φ //关于子树不相交的说明
③ ……
//关于数据元素的说明
④ ……
//关于左子树和右子树的说明
B n1
B n2 2 n1 1
n n2 2 n1 11 n2 n1 n0
北京林业大学信息学院
特殊形态的二叉树
1
只有最后一层叶子不满 ,且全部1 集中在左边
2
3
2
3
4
5
6
7
4
5
6
7
北大强基面试题目
![北大强基面试题目](https://img.taocdn.com/s3/m/b59eb5ee29ea81c758f5f61fb7360b4c2e3f2a04.png)
北大强基面试题目
北大强基面试题目是北大计算机系为了选拔优秀学生而设计的一系列面试题目。
以下是一些常见的北大强基面试题目:
1. 数据结构和算法方面:
- 请解释什么是动态规划,并举一个实际应用的例子。
- 请解释什么是哈希表,并说明其在解决问题中的作用。
- 请实现一个快速排序算法,并分析其时间复杂度和空间复杂度。
2. 编程语言方面:
- 请解释面向对象编程的概念,并说明其与面向过程编程的区别。
- 请写出一个使用递归实现的斐波那契数列的函数。
- 请解释什么是异常处理,并说明其在程序开发中的重要性。
3. 计算机网络方面:
- 请解释什么是TCP/IP协议,并说明其在网络通信中的作用。
- 请解释什么是HTTP协议,并说明其与HTTPS协议的区别。
- 请解释什么是DNS,并说明其在互联网中的作用。
4. 操作系统方面:
- 请解释什么是进程和线程,并说明它们之间的区别。
- 请解释什么是死锁,并提供一个实际例子以及如何避免死锁的方法。
- 请解释什么是虚拟内存,并说明它的作用和优缺点。
以上只是一些常见的北大强基面试题目示例,实际面试中可能会有更多的题目
涵盖更多的领域。
希望这些问题的回答能够帮助你更好地准备面试。
B树与B树数据结构中的多路搜索树
![B树与B树数据结构中的多路搜索树](https://img.taocdn.com/s3/m/e6b29706c950ad02de80d4d8d15abe23482f0331.png)
B树与B树数据结构中的多路搜索树B树是一种常见的数据结构,被广泛应用于数据库和文件系统中,用于高效地存储和检索大量数据。
B树是一种多路搜索树,其特点是每个节点可以拥有多个子节点,相比于二叉搜索树,B树能够减少树的高度,减少查找所需的IO次数,提高检索效率。
一、B树的基本概念B树是一种平衡的多路搜索树,其每个节点可以包含多个子节点。
B树的定义如下:1. 根节点至少有两个子节点。
2. 每个非叶子节点有m个子节点,其中m满足:[m/2] ≤ 子节点个数≤ m。
3. 每个非叶子节点的子节点个数比关键字个数多1。
4. 所有叶子节点都在同一层。
B树的节点结构包含关键字和指向子节点的指针。
通过这种结构,B树能够在每个节点存储更多的关键字,减少树的高度,提高检索效率。
二、B树的插入操作在B树中插入一个新的关键字时,需要按照以下步骤进行:1. 从根节点开始,沿着树向下查找插入位置。
2. 如果插入位置所在节点的关键字数量未达到上限,则直接插入。
3. 如果插入位置所在节点的关键字数量已达到上限,则进行节点分裂操作:a. 将该节点的关键字按中间位置分成两部分,中间位置的关键字上移至父节点。
b. 将左右两部分关键字分别作为两个新节点的关键字。
c. 更新父节点的指针,指向新的子节点。
4. 重复以上步骤,直到插入到叶子节点。
B树的插入操作保持了树的平衡性,确保了树的高度始终在可接受范围内。
三、B树的删除操作在B树中删除一个关键字时,需要按照以下步骤进行:1. 从根节点开始,沿着树向下查找待删除关键字所在位置。
2. 如果待删除关键字在非叶子节点上,则找到其前驱或后继关键字替换,并递归删除替换关键字。
3. 如果待删除关键字在叶子节点上:a. 直接删除该关键字。
b. 如果删除后节点关键字数量小于下限,则进行节点合并操作:- 如果相邻兄弟节点关键字数量大于下限,则从兄弟节点借一个关键字。
- 如果相邻兄弟节点关键字数量也小于下限,则进行节点合并,合并后删除父节点中的关键字。
北京大学数据结构与算法往年复习提纲
![北京大学数据结构与算法往年复习提纲](https://img.taocdn.com/s3/m/8d83f47e28ea81c758f578b7.png)
•信息学院《数据结构与算法A》期末考试1. 考试时间和地点考试时间:2018.01.03周三上午8:30 – 10:30考试地点:等通知2. 考试题型填空、选择、辨析与简答、数据结构或算法的设计和分析、数学证明注意:(1)数据结构/算法设计与分析题只要写明基本思想、无歧义即可,必要时加上足够的注释。
(2)对于算法中直接使用的类和函数(例如栈、队列的函数),应该先写ADT,并简单说明算法中用到的重要函数的功能、入口参数、出口参数。
3. 考试范围和重点7-12章,以本文最后的内容为复习重点,尤其是★标出部分为重中之重。
考试时如果涉及到本大纲没有列出的内容,那么试卷中会给出足够的定义和性质。
4. 考场安排和注意事项1) 没有正式选课的旁听同学,请不要来考场。
2) 请随身带好您的学生证(或其他可以证明身份的证件),笔和涂改工具参加考试。
3) 考试形式为闭卷,可以使用计算器。
4)考前10分钟,请大家把书包、课本、讲义、作业本、自带的草稿纸等放在教室前面的讲台和窗台上,只需要留下学生证(或其他可以证明身份的证件),笔和涂改工具。
教室清理干净后,可以提前5分钟发放试卷(带有草稿纸和答题纸,可以撕下来),从前排向后排发放。
注意在试卷纸和有效答题纸上写上姓名和学号,并且一定要在试卷纸的诚实答题宣言旁边的姓名和学号栏签名(否则,试卷计零分)。
5) 我们统一发草稿纸,不够可以随时举手要。
6) 请大家注意考场纪律,不要交头接耳,私下讨论。
考试时对试题有疑问,可以举手,待监考老师来到旁边时,再请向监考老师询问。
7)考试时间为120分钟,中间不休息。
提前15分钟提醒大家整理试卷,注意写好姓名和学号。
8) 监考老师宣布“考试时间到”以后,请大家停笔(不停笔的同学,监考老师有权没收试卷并宣布作废),把草稿纸和答题纸放在试卷上面,使姓名和学号朝外(诚实答题宣言旁边的姓名和学号朝向最外面),对折以后放在桌面上。
监考老师收卷清点无误,并宣布“全班同学都可以离开了”以后方可集体离开。
数据结构与算法
![数据结构与算法](https://img.taocdn.com/s3/m/aa056cd7360cba1aa811da73.png)
数据结构与算法第十章索引技术任课教员:张铭/mzhang/DS/mzhang@ 北京大学信息科学与技术学院网络与信息系统研究所©版权所有,转载或翻印必究北京大学信息学院©版权所有,转载或翻印必究Page 2主要内容10.1 线性索引 10.2 静态索引 10.3 倒排索引 10.4 动态索引10.5 动态、静态索引性能比较北京大学信息学院©版权所有,转载或翻印必究Page 3基本概念输入顺序文件 主码与辅码索引与索引文件稠密索引与稀疏索引北京大学信息学院©版权所有,转载或翻印必究Page 4输入顺序文件输入顺序文件( entry-sequenced file )按照记录进入系统的顺序存储记录一般说来,输入顺序文件的结构相当于一个磁盘中未排序的线性表因此不支持高效率的检索北京大学信息学院©版权所有,转载或翻印必究Page 5主码主码( primary key )是数据库中的每条记录的唯一标识例如,公司职员信息的记录的主码可以是职员的身份证号码如果只有主码,不便于各种灵活检索北京大学信息学院©版权所有,转载或翻印必究Page 6辅码辅码( secondary key )是数据库中可以出现重复值的码辅码索引把一个辅码值与具有这个辅码值的每一条记录的主码值关联起来大多数检索都是利用辅码索引来完成的北京大学信息学院©版权所有,转载或翻印必究Page 7索引索引( indexing )是把一个关键码与它对应的数据记录的位置相关联的过程索引技术是组织大型数据库的一种重要技术数据库组织存储在外存中的大量记录高效率的检索插入、更新、删除北京大学信息学院©版权所有,转载或翻印必究Page 8索引文件索引文件( index file )是用于记录这种联系(关键码与它对应的数据记录的位置)的文件组织结构。
索引文件的记录(关键码,指针)对指针指向主要数据库文件(也称为“主文件”)中的完整记录北京大学信息学院©版权所有,转载或翻印必究Page 9索引文件索引文件并不需要重新排列记录在磁盘中的顺序(不用重排主文件)一个数据库可能有多个相关的索引文件每个索引文件往往支持一个关键码字段可以通过该索引文件高效访问记录中该关键码值北京大学信息学院©版权所有,转载或翻印必究Page 10稠密索引对每一个记录建立一个索引项,这样建立的索引被称为稠密索引( dense index )数据库文件中的记录不按照关键码的顺序排列时(比如按照加入的顺序排列)北京大学信息学院©版权所有,转载或翻印必究Page 11稀疏索引对一组记录建立一个索引项,这种索引称之为稀疏索引( spare index )当记录在磁盘中是按照关键码的顺序存放可以把记录分成多个组(块)稀疏索引索引项的指针指向的是这一组记录在磁盘中的起始位置北京大学信息学院©版权所有,转载或翻印必究Page 1210.1 线性索引基本概念线性索引的优点 线性索引的问题 二级线性索引北京大学信息学院©版权所有,转载或翻印必究Page 13基本概念线性索引(linear index)的索引文件一组简单的关键码(key)/指针(pointer)对的序列北京大学信息学院©版权所有,转载或翻印必究Page 14基本概念(续)线性索引文件按照关键码的顺序进行排序文件中的指针指向存储在磁盘上的文件记录起始位置或者主索引中主码的起始位置3755739292 73 37 55 线性索引文件数据库记录北京大学信息学院©版权所有,转载或翻印必究Page 15基本概念(续)线性索引的索引文件存储在内存中,把索引存储在内存中能大大地提高检索速度 存储在磁盘中根据线性索引的文件大小和内存的空间限制北京大学信息学院©版权所有,转载或翻印必究Page 16线性索引的优点对变长的数据库记录的访问 可以对数据进行高效检索二分检索顺序处理比较操作批处理的操作节省空间(相对其它索引结构)北京大学信息学院©版权所有,转载或翻印必究Page 17线性索引的问题线性索引太大,存储在磁盘中在一次检索过程中有可能多次访问磁盘,从而影响检索的效率 解决办法:使用二级线性索引更新线性索引在数据库中插入或者删除记录时北京大学信息学院©版权所有,转载或翻印必究Page 18二级线性索引每一条二级线性索引记录对应于一个一级线性索引文件的磁盘块关键码的值与对应的线性索引文件的磁盘块中第一条记录(从物理位置上看的第一条)的关键码的值相同记录中的指针则指向相应线性索引文件的磁盘块的起始位置北京大学信息学院©版权所有,转载或翻印必究Page 19二级线性索引例如,磁盘块的大小是1024字节,每个关键码/指针记录需要8个字节1024 / 8 = 128每磁盘块可以存储128条这样的记录假设线性文件索引中包含10000条记录10000/128 = 78.1那么一级线性索引占用79个磁盘块相应的,二级线性索引文件中有79项记录北京大学信息学院©版权所有,转载或翻印必究Page 20二级线性索引的例子关键码与相应磁盘块中第一条记录的关键码的值相同指针指向相应磁盘块的起始位置1200357441072312002 2003 5583 5744 9297 10723 13293…………二级索引线性索引 磁盘块北京大学信息学院©版权所有,转载或翻印必究Page 21二级线性索引检索在检索时,线性索引文件并不被读入内存,被读入内存的是二级线性索引文件由于二级索引往往存储内存,通常只需要访问两次磁盘即可:一次读入线性索引文件,一次读入数据库记录北京大学信息学院©版权所有,转载或翻印必究Page 22二级线性索引检索的例子例如,检索关键码为2555的记录首先在内存中的二级线性索引文件中找到关键码的值小于等于2555的最大关键码所在的记录——关键码为2003的记录根据记录中的指针找到其对应的线性索引文件的磁盘块,并把该块读入内存按照二分法对该块进行检索,找到所需要的记录在磁盘上的位置最后把所需记录读入,完成检索操作北京大学信息学院©版权所有,转载或翻印必究Page 2310.2 静态索引10.2.1 多分树10.2.2 ISAM北京大学信息学院©版权所有,转载或翻印必究Page 24基本概念静态索引索引结构在文件创建、初始装入记录时生成一旦生成就固定下来,在系统运行(例如插入和删除记录)过程中索引结构并不改变只有当文件再组织时才允许改变索引结构北京大学信息学院©版权所有,转载或翻印必究Page 2510.2.1 多分树组织索引一般不用二叉树而采用多分树大大减少访问外存的次数北京大学信息学院©版权所有,转载或翻印必究Page 26多分树图例二叉树转换成多分树北京大学信息学院©版权所有,转载或翻印必究Page 27上图访问一个叶结点查找二叉树——访问六次外存 查找多分树——访问两次外存北京大学信息学院©版权所有,转载或翻印必究Page 28结点更大以更少的外存访问次数来完成查找 需要较大的缓冲区读入一个结点也需较多时间一个结点最好能放在一个磁盘块中北京大学信息学院©版权所有,转载或翻印必究Page 29“数据基本区”多分树的叶结点区域 存放数据记录“索引区”多分树的非叶结点区域存放各子树结点中的最大(或最小)的关键码北京大学信息学院©版权所有,转载或翻印必究Page 30溢出、溢出区新记录要插入的结点已满把溢出的记录存放到另开辟的溢出区不改变索引的结构记录送入溢出区的两种方式保持顺序,把最后一个记录送往溢出区不保持顺序,把新插入的记录送入溢出区北京大学信息学院©版权所有,转载或翻印必究Page 3110.2.2 ISAMISAM是解决需要频繁更新的大型数据库的一个早期尝试在采用基于B +树的VSAM技术之前,IBM公司曾经广泛地采用ISAM技术北京大学信息学院©版权所有,转载或翻印必究Page 32多分树的应用为磁盘存取而设计 结构采用多级索引主索引 柱面索引 磁道索引北京大学信息学院©版权所有,转载或翻印必究Page 33 400 T 1 625 T 21000 T 3 80 C 1T 0 200 C 2T 0400 C 3T 0 625 C 6T 01000C 9T 0T 0 T 1 T 2 T 3 嗫40 T 1 40 T 1 80 T 2 80 T 2… C 1T 0 R 10 R 20 R 30 R 40R 50 R 60R 70 R 80嗫T 1 T 2 T 7嗫 柱面索引主索引 基本区 磁道索引溢出区C 0北京大学信息学院©版权所有,转载或翻印必究Page 34150T 1150T 1200T 2200 T 2…890 T 1890T 11000 T 2 1000 T 2… R 90 R 110 R 120 R 150R 160R 175R 190 R 200R 830 R 840 R 880 R 890R 920R 930R 980 R 1000T 1T 2T 7嗫T 7T 2嗫T 1T 0T 0C 2 C 9嗫嗫基本区 磁道索引溢出区基本区 磁道索引溢出区嗫 北京大学信息学院©版权所有,转载或翻印必究Page 35ISAM 的查找先查主索引,从主索引查出柱面索引的分布主索引常驻内存从柱面索引查出磁道索引的分布柱面索引放在中间位置的柱面从磁道索引查出所要找的记录的地址北京大学信息学院©版权所有,转载或翻印必究Page 36ISAM 的插入磁道索引中,索引项的两个子项在记录插入之前是相同的,在插入记录后就要改变例如,插入R165 以后:150 T 1150 T 1190 T 2200 T 7…北京大学信息学院©版权所有,转载或翻印必究Page 37如果有多个溢出记录,则这些溢出记录必须按顺序链接起来,在溢出索引项中是这些溢出记录的最大关键码和具有最小关键码的溢出记录所在磁道号例如,再插入R168,R166以后:150 T 1150 T 1168 T 2200 T 6…北京大学信息学院©版权所有,转载或翻印必究Page 38如果有多个溢出记录,则这些溢出记录必须按顺序链接起来,在溢出索引项中是这些溢出记录的最大关键码和具有最小关键码的溢出记录所在磁道号例如,再插入R168,R166以后:150 T 1150 T 1168 T 2200 T 6…北京大学信息学院©版权所有,转载或翻印必究Page 39在溢出区中,除了存放记录以外还存放链指针柱面索引变化:150 T 1 150 T 1 168 T 2 200 T 6 …R 40 R 110 R 120 R 150 R 160R 165R 166R 168T 1 T 2T 7嗫T 0 嗫…R 175 T 6RIII RX 1 P 1 R 200ΛRX 3P 3R 190 T 7RIRX 2P 2 T 6基本区溢出区磁道索引C 2北京大学信息学院©版权所有,转载或翻印必究Page 40ISAM 插入的好处在进一步查找时,容易判断要查找的记录是在基本区还是在溢出区若在基本区,则指针指出了记录所在的磁道号;若在溢出区,则指针指出了溢出记录链中第一个(关键码为最小)记录所在的磁道号及在磁道中的相对记录号,沿着该链可以找到要找的记录。
b 树检索原理
![b 树检索原理](https://img.taocdn.com/s3/m/93bd29eb27fff705cc1755270722192e45365888.png)
b 树检索原理B树是一种平衡搜索树,它的检索原理主要是通过多路搜索和分裂合并来保持树的平衡性,以提高检索效率。
B树是一种非常重要的数据结构,广泛应用于数据库、文件系统等领域。
B树是一种自平衡的搜索树,它的每个节点可以存储多个关键字和对应的值。
B树的节点可以有多个子节点,子节点的个数称为B树的阶数。
B树的特点是所有叶子节点具有相同的深度,且根节点至少有两个子节点。
B树的平衡性体现在树的高度较低,所有节点的子节点个数相对较多。
B树的检索过程从根节点开始,根据节点中的关键字进行搜索。
如果搜索的关键字存在于节点中,则直接返回对应的值。
如果搜索的关键字小于节点中的最小关键字,则继续向节点的左子节点进行搜索。
如果搜索的关键字大于节点中的最大关键字,则继续向节点的右子节点进行搜索。
如果搜索的关键字在节点的关键字范围内,则根据节点中的指针找到下一个要搜索的节点,并继续进行搜索。
B树的检索过程类似于二分查找,但是不同的是B树可以同时搜索多个关键字。
这是因为B树的节点中可以存储多个关键字,并且节点的子节点个数较多。
通过多路搜索,B树可以提高搜索效率,减少搜索的次数。
在B树中插入新的关键字时,需要保持树的平衡性。
如果插入的关键字所在的节点还有空闲位置,则直接插入到该节点中。
如果插入的关键字所在的节点已满,则需要进行节点的分裂。
节点分裂的过程是将节点中的关键字一分为二,并将较小的关键字放在原节点中,将较大的关键字放在新的节点中。
同时,原节点和新节点之间还需要建立适当的链接关系。
通过节点的分裂,可以保持B树的平衡性。
在B树中删除关键字时,也需要保持树的平衡性。
如果删除的关键字所在的节点中还有其他关键字,则直接删除该关键字。
如果删除的关键字所在的节点已经为空,则需要进行节点的合并。
节点合并的过程是将两个相邻的节点合并成一个新的节点,并将中间的关键字放在新的节点中。
同时,原节点和新节点之间还需要建立适当的链接关系。
通过节点的合并,可以保持B树的平衡性。
北大计算机系考研书目录
![北大计算机系考研书目录](https://img.taocdn.com/s3/m/133061b9fbb069dc5022aaea998fcc22bcd143f0.png)
北大计算机系考研书目录
1. 数据结构与算法分析
- 数组
- 链表
- 栈和队列
- 树
- 图
- 排序算法
- 查找算法
2. 操作系统原理
- 进程管理
- 内存管理
- 文件系统
- 设备管理
3. 计算机网络
- OSI参考模型
- TCP/IP协议
- 网络编程
- 网络安全
4. 数据库系统
- 关系数据库模型
- SQL语言
- 数据库设计与优化
- 事务管理与并发控制
5. 编程语言理论与编译器设计 - 语法与语义
- 词法分析
- 语法分析
- 代码优化与生成
6. 计算机图形学
- 二维图形学
- 三维图形学
- 光照与着色
- 渲染技术
7. 人工智能与机器学习
- 人工智能基础
- 机器学习算法
- 深度学习
- 自然语言处理
8. 数据挖掘与大数据处理
- 数据预处理
- 特征选择与降维
- 聚类与分类
- 关联规则挖掘
9. 软件工程与项目管理
- 软件开发生命周期
- 需求分析与规格说明 - 软件设计与构建
- 软件测试与维护
10. 计算机系统结构
- 指令集体系结构
- 存储器层次结构
- I/O系统
11. 数字图像处理
- 图像基础
- 图像增强
- 图像压缩
- 图像分割与识别
12. 计算机安全与密码学 - 基本的安全概念
- 密码学基础
- 认证与访问控制
- 网络安全。
《数据结构与算法》课后习题答案
![《数据结构与算法》课后习题答案](https://img.taocdn.com/s3/m/7e8f131a0622192e453610661ed9ad51f01d5484.png)
《数据结构与算法》课后习题答案一、算法分析和复杂度1.1 算法复杂度的定义算法的复杂度是指算法所需资源的度量,包括时间复杂度和空间复杂度。
时间复杂度描述了算法的执行时间随输入规模增长的增长速度,空间复杂度描述了算法执行期间所需的存储空间随输入规模增长的增长速度。
1.2 时间复杂度的计算方法时间复杂度可以通过估算算法的执行次数来计算。
对于循环结构,通常可以通过循环体内代码的执行次数来估算时间复杂度。
对于递归算法,则可以通过递归的深度和每次递归的复杂度来计算时间复杂度。
1.3 常见的时间复杂度在算法分析中,常见的时间复杂度有:O(1)、O(log n)、O(n)、O(n log n)、O(n^2)、O(n^3)等。
其中,O(1)表示算法的执行时间与输入规模无关,即常数时间复杂度;O(log n)表示算法的执行时间随输入规模呈对数增长;O(n)表示算法的执行时间随输入规模呈线性增长;O(nlog n)表示算法的执行时间随输入规模呈线性对数增长;O(n^2)表示算法的执行时间随输入规模呈平方增长;O(n^3)表示算法的执行时间随输入规模呈立方增长。
1.4 空间复杂度的计算方法空间复杂度可以通过估计算法执行过程中所需要的额外存储空间来计算。
对于递归算法,通常使用递归的深度来估算空间复杂度。
1.5 算法复杂度的应用算法的复杂度分析在实际应用中非常重要,可以帮助我们选择合适的算法来解决问题。
在时间复杂度相同的情况下,可以通过比较空间复杂度来选择更优的算法。
在实际开发中,我们也可以根据算法的复杂度来进行性能优化,减少资源的消耗。
二、搜索算法2.1 线性搜索算法线性搜索算法是一种简单直观的搜索算法,逐个比较待搜索元素和数组中的元素,直到找到匹配的元素或遍历完整个数组。
其时间复杂度为O(n),空间复杂度为O(1)。
2.2 二分搜索算法二分搜索算法是一种高效的搜索算法,前提是数组必须是有序的。
算法首先取数组的中间元素进行比较,如果相等则返回找到的位置,如果大于中间元素则在右半部分继续搜索,如果小于中间元素则在左半部分继续搜索。
B树的结构详细讲解
![B树的结构详细讲解](https://img.taocdn.com/s3/m/2154bb9027fff705cc1755270722192e453658e6.png)
B树的结构详细讲解B树,又称为平衡多路树,是一种多叉树的数据结构,特别适用于大量数据的存储和索引。
B树具有以下特征:1.多路性:B树中每个节点可以拥有多个子节点,相对于二叉树的两个子节点,B树可以拥有更多的子节点。
2. 平衡性:B树的所有叶子节点位于同一层,也就是说,从根节点到任何一个叶子节点的路径长度是相同的。
这种平衡特性使得在B树中进行查找、插入和删除等操作的时间复杂度能够保持在O(log n)级别。
3.存储有序性:B树的所有节点按照关键字的大小依次排序,使得在B树中的数据也是有序的。
1.根节点:B树的根节点是位于树的顶部的节点,通常在树的开始时创建。
根节点可以有多个子节点。
2.子节点:B树的每个节点可以有多个子节点,子节点的数量可以根据需求调整大小。
3.叶子节点:B树中的叶子节点是不再有子节点的节点,它们保存了实际的数据。
4.分支节点:B树中的非叶子节点被称为分支节点,它们不存储实际的数据,而是用于分割子树。
5.关键字:B树中的每个节点包含一个或多个关键字,关键字可以根据需要进行排序。
B树的插入操作:1.首先,从根节点开始,在B树中查找新插入关键字的位置。
2.如果该关键字已经存在于B树中,则进行更新操作。
3.如果不存在,则将关键字插入到叶子节点中。
4.如果插入关键字后,导致该节点的关键字数量超出了节点的最大限制值,那么需要进行节点分裂操作。
5.先将节点的关键字进行排序,然后将中间的关键字提升到父节点中,并将该节点分成两个节点。
6.如果父节点的关键字数量超出了节点的最大限制值,那么需要继续进行节点分裂操作。
B树的删除操作:1.首先,从根节点开始,在B树中查找要删除的关键字。
2.如果该关键字不存在于B树中,则删除操作结束。
3.如果存在于B树中,删除该关键字,并调整树的结构。
4.如果删除关键字后,节点的关键字数量小于节点的最小限制值,那么需要进行节点合并操作。
5.将节点与其相邻的兄弟节点进行合并,并将合并后的关键字放入父节点中。
2022年北京建筑大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
![2022年北京建筑大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)](https://img.taocdn.com/s3/m/20d9ce3bcdbff121dd36a32d7375a417866fc1cf.png)
2022年北京建筑大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、n个结点的完全有向图含有边的数目()。
A.n*nB.n(n+1)C.n/2D.n*(n-1)2、从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为()排序法。
A.插入B.选择C.希尔D.二路归并3、链表不具有的特点是()。
A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比4、在用邻接表表示图时,拓扑排序算法时间复杂度为()。
A.O(n)B.O(n+e)C.O(n*n)D.O(n*n*n)5、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341566、若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b, c,d,e,a,则根结点的孩子结点()。
A.只有e B.有e、b C.有e、c D.无法确定7、若元素a,b,c,d,e,f依次进栈,允许进栈、退栈操作交替进行,但不允许连续三次进行退栈操作,则不可能得到的出栈序列是()。
8、有关二叉树下列说法正确的是()。
A.二叉树的度为2B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为29、一棵非空的二叉树的前序序列和后序序列正好相反,则该二叉树一定满足()。
A.其中任意一个结点均无左孩子B.其中任意一个结点均无右孩子C.其中只有一个叶结点D.其中度为2的结点最多为一个10、在文件“局部有序”或文件长度较小的情况下,最佳内部排序的方法是()。
A.直接插入排序B.起泡排序C.简单选择排序D.快速排序二、填空题11、设m、n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。
例f(5,3)=5,有5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
2022年北京工商大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
![2022年北京工商大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)](https://img.taocdn.com/s3/m/7a672bb9f424ccbff121dd36a32d7375a417c6cf.png)
2022年北京工商大学计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、已知广义表LS=((a,b,c),(d,e,f)),用head和tail数取出LS中原子e的运算是()。
A.head(tail(LS))B.tail(head(LS))C.head(tail(head(tail(LS))))D.head(tail(tail(head(LS))))2、用有向无环图描述表达式(A+B)*((A+B)//A),至少需要顶点的数目为()。
A.5B.6C.8D.93、若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A.单链表B.双向链表C.单循环链表D.顺序表4、最大容量为n的循环队列,队尾指针是rear,队头:front,则队空的条件是()。
A.(rear+1)MOD n=frontB.rear=frontC.rear+1=frontD.(rear-1)MOD n=front5、在下列表述中,正确的是()A.含有一个或多个空格字符的串称为空格串B.对n(n>0)个顶点的网,求出权最小的n-1条边便可构成其最小生成树C.选择排序算法是不稳定的D.平衡二叉树的左右子树的结点数之差的绝对值不超过l6、已知关键字序列5,8,12,19,28,20,15,22是小根堆(最小堆),插入关键字3,调整后的小根堆是()。
A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,197、下列选项中,不能构成折半查找中关键字比较序列的是()。
A.500,200,450,180 B.500,450,200,180C.180,500,200,450 D.180,200,500,4508、每个结点的度或者为0或者为2的二叉树称为正则二叉树。
2022年华北电力大学(北京)计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)
![2022年华北电力大学(北京)计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)](https://img.taocdn.com/s3/m/df42eea4fc0a79563c1ec5da50e2524de518d0f1.png)
2022年华北电力大学(北京)计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案)一、选择题1、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储, a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.402、哈希文件使用哈希函数将记录的关键字值计算转化为记录的存放地址,因为哈希函数是一对一的关系,则选择好的()方法是哈希文件的关键。
A.哈希函数B.除余法中的质数C.冲突处理D.哈希函数和冲突处理3、若线性表最常用的操作是存取第i个元素及其前驱和后继元素的值,为节省时间应采用的存储方式()。
A.单链表B.双向链表C.单循环链表D.顺序表4、已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7}, E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>, <V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V5,V2,V6,V7D.V1,V2,V5,V3,V4,V6,V75、有六个元素6,5,4,3,2,1顺序入栈,下列不是合法的出栈序列的是()。
A.543612B.453126C.346521D.2341566、若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b, c,d,e,a,则根结点的孩子结点()。
A.只有e B.有e、b C.有e、c D.无法确定7、排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排Ⅴ.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ B.仅Ⅰ、Ⅱ、Ⅲ C.仅Ⅱ、Ⅲ、Ⅳ D.仅Ⅲ、Ⅳ、Ⅴ8、一棵哈夫曼树共有215个结点,对其进行哈夫曼编码,共能得到()个不同的码字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京大学信息学院2007年秋季学期《数据结构与算法A(实验班)》课程作业
张铭编写并发布 mzhang@ 第11次作业,12月17日(周一)课前提交,电子稿提交时间12月17日开课之前提交。
11.1 偶数阶的B 树插入上溢出时,中
位数有两个,需要注意采用统一的策略。
例如,取第二个中位数,
即分裂后左(1)/2m −⎡⎤⎢⎥个关键码,右(1)/2m −⎢⎥⎣⎦;
或者取第一个中位数,分裂后左(1)/2m −⎢⎥⎣⎦
右(1)/2m −⎡⎤⎢⎥。
请画出对右图的4阶B 树进行下来操作后的B 树。
(1) 分裂时采用第2个中位数为
分界码,请画出插入关键码113后的B 树;分析插入操作的访外次数。
(2) 分裂时采用第1个中位数为分界码,请画出插入关键码113后的B 树;分析插入操
作的访外次数。
(3) 在原树中删除关键码50;分析删除操作的访外次数(与1、2题无关,从根重新开
始操作)。
11.2 已知一组关键码为(20, 30, 50, 52, 60, 68, 70),试依次插入关键码。
(1) 生成一棵3阶的B +树,画出插入所有关键码后B 树的结构。
(2) 画出删除50后的B + 状态,分析删除操作的访外次数。
11.3 假设一个数据文件每个记录对象需要占用128 字节(其中关键码占用4字节),且所
有记录均已按关键码有序地存储在主磁盘文件中。
设磁盘页块大小为2048(= 2K )字节,若主存中有12M 空间可以用来存储索引结构,索引项中每一个地址指针占8 字节。
请简要回答以下问题(请写明你的计算过程)。
(1) 使用B 树索引,B 树的阶m 1最多可以为多少?4层m 1阶B 树,最多可以索引多
少字节的数据文件?
(2) 使用B +树索引,B +树的阶m 2最多可以为多少?
(3) 假设B +树的叶层各结点链接成双链结构,B +树的叶结点阶m 2’可以跟内部结点不
一样,则阶m 2’为多少?
(4) 在第(3)小题的基础上,计算4层B +树(内部结点为m 2阶,叶结点m 2’阶),最多
可以索引多少字节的数据文件?
(5) 假设尽量把B +树的头几层放入内存(本题规定不能超过12M ),那么给定关键码,
通过B +树查找到(4)小题中主数据文件的一个记录,最少几次访外?最多几次访
外?
11.4 对于下面两种B +树,列表给出他们在1、2、3、4和5层(独根是一层树)的不同情
况下,能够存储的最大记录数和最小记录数。
(1) 对于教材定义那样的B +树,其内部结点阶为50,叶结点阶为50。
(2) 如讲义P89那样的混合型B +树,其内部结点阶为55,叶结点阶为25(叶结点除关
键码,还索引部分记录信息)。
4阶B 树。