数据结构 (c++)第9章 索引技术

合集下载

数据结构c++版课后习题解析

数据结构c++版课后习题解析
输入:一个整数b
功能:将整数a与输入的整数b相加
输出:相加后的结果
后置条件:整数a的值发生改变
Sub
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相减
输出:相减的结果
后置条件:整数a的值发生改变
Multi
前置条件:存在一个整数a
输入:一个整数b
功能:将整数a与输入的整数b相乘
输出:相乘的结果
【解答】其逻辑结构图如图1-3所示,它是一种图结构。
(2)为整数定义一个抽象数据类型,包含整数的常见运算,每个运算对应一个基本操作,每个基本操作的接口需定义前置条件、输入、功能、输出和后置条件。
【解答】整数的抽象数据类型定义如下:
ADT integer
Data
整数:可以是正整数(1, 2, 3, … )、负整数(-1, -2, -3, …)和零
【解答】D
【分析】抽象数据类型是一个数据结构以及定义在该结构上的一组操作的总称。
(6)算法指的是( )。
A 对特定问题求解步骤的一种描述,是指令的有限序列。
B 计算机程序 C 解决问题的计算方法 D 数据处理
【解答】A
【分析】计算机程序是对算法的具体实现;简单地说,算法是解决问题的方法;数据处理是通过算法完成的。所以,只有A是算法的准确定义。
本章导学67
习题解析68
第9章索引技术78
本章导学78
习题解析78
第 1 章 绪 论
本章导学
1. 知识结构图
本章的知识结构如图1-1所示,其中第二层的椭圆代表本章的学习主线。
2. 学习要点
对本章的学习要从两条主线出发,一条主线是数据结构,包括数据结构的相关概念及含义,另一条主线是算法,包括算法的相关概念、描述方法以及时间复杂度的分析方法。

大学数据结构课件--第9章 查找

大学数据结构课件--第9章 查找
——这种既查找又插入的过程称为动态查找。
二叉排序树既有类似于折半查找的特性,又采用了链表存储,它是动态 查找表的一种适宜表示。
注:若数据元素的输入顺序不同,则得到的二叉排序树形态 也不同!
17
二、二叉树的插入和删除操作
1、二叉排序树的插入和查找操作
例:输入待查找的关键字序列=(45,24,53,12,90)
折半查找举例:
已知如下11个元素的有序表:
(05 13 19 21 37 56 64 75 80 88 92), 请查找关键字为21和85的数据元素。
Low指向待查元 素所在区间的下 界
mid指向待查元素所在 high指向待查元素所
区间的中间位置
在区间的上界
8
9.1.2 折半查找(又称二分查找或对分查找)
balance。这样,可以得到AVL树的其它性质:
❖ 任一结点的平衡因子只能取:-1、0 或 1;如果树中任 意一个结点的平衡因子的绝对值大于1,则这棵二叉树 就失去平衡,不再是AVL树;
24
三、平衡二叉树
例:判断下列二叉树是否AVL树?
-1
1
-1
0
0
1
0
(a) 平衡树
2
-1
0
0
1
0
(b) 不是平衡树
(1)p为叶子结点,只需修改p双亲f的指针f->lchild=NULL或 f->rchild=NULL
(2)P只有左子树或右子树 ❖ P只有左子树,用P的左孩子代替P ❖ P只有右子树,用P的右孩子代替P
(3)P左、右子树均非空 (P左子树的根C的右子树分支找到S,S的右子树为空) ❖ P的左子树成为双亲f的左子树,P的右子树成为S的右子树 ❖ S的左子树成为S的双亲Q的右子树,用S取代p; 若C无右子树,用C取代p

数据结构(C语言版)9-12章练习 答案 清华大学出版社

数据结构(C语言版)9-12章练习 答案 清华大学出版社

数据结构(C语言版)9-12章练习答案清华大学出版社9-12章数据结构作业答案第九章查找选择题1、对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( A )A.(n+1)/2 B. n/2 C. n D. [(1+n)*n ]/2 2. 下面关于二分查找的叙述正确的是 ( D )A. 表必须有序,表可以顺序方式存储,也可以链表方式存储B. 表必须有序且表中数据必须是整型,实型或字符型 C. 表必须有序,而且只能从小到大排列 D. 表必须有序,且表只能以顺序方式存储3. 二叉查找树的查找效率与二叉树的( (1)C)有关, 在 ((2)C )时其查找效率最低 (1): A. 高度 B. 结点的多少 C. 树型 D. 结点的位置(2): A. 结点太多 B. 完全二叉树 C. 呈单枝树 D. 结点太复杂。

4. 若采用链地址法构造散列表,散列函数为H(key)=key MOD 17,则需 ((1)A)个链表。

这些链的链首指针构成一个指针数组,数组的下标范围为 ((2)C) (1) A.17 B. 13 C. 16 D. 任意(2) A.0至17 B. 1至17 C. 0至16 D. 1至16判断题1.Hash表的平均查找长度与处理冲突的方法无关。

(错) 2. 若散列表的负载因子α<1,则可避免碰撞的产生。

(错)3. 就平均查找长度而言,分块查找最小,折半查找次之,顺序查找最大。

(错)填空题1. 在顺序表(8,11,15,19,25,26,30,33,42,48,50)中,用二分(折半)法查找关键码值20,需做的关键码比较次数为 4 .算法应用题1. 设有一组关键字{9,01,23,14,55,20,84,27},采用哈希函数:H(key)=key mod7 ,表长为10,用开放地址法的二次探测再散列方法Hi=(H(key)+di) mod 10解决冲突。

要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

数据结构大纲

数据结构大纲

1. 关于算法:(1)算法语言无所谓,只要能看懂。

考试用C++出题,但答题随意(可以用C/C++、Java、Pascal、自然语言等等,看得懂就可以)。

(2)如果要求自己独立地写算法(而不是填空),请注意写算法思想,并加上足够的注释(3)对于算法中直接使用的类和函数(例如栈、队列的函数),应该先写ADT,并说明函数功能、入口参数、出口参数2. 考试范围和重点不考11.3存储管理,不考12.3空间树结构,不考12.4.1决策树、12.4.2博弈树。

各章节以下面的内容为复习重点,尤其是___________、黑体字或★标出部分为重中之重。

其中黑体字为根据新教材本届考试增加的内容。

考试时如果涉及到本大纲没有列出的内容,那么试卷中会给出足够的定义和性质。

第1章概论(教材中本章作者为许卓群)一. 重要概念1. 数据类型2. 抽象数据结构3. 数据结构4. 存储结构5. 算法6. 算法度量(时间代价、空间代价)7. 数据结构的选择和评价二. 方法1. 根据二元组画出图示逻辑结构(注意边的方向)2. 根据要求设计数据结构3. 算法度量的大O表示法的简化法则(不要求掌握大Ω、大Θ表示法)第2章线性表(教材中本章作者为许卓群)一. 概念1. 线性表2. 单链表3. 双链表4. 循环表5. 栈6. 队列7. 循环队列二. 方法1. 线性表的运算(指针操作的正确性)2. 循环队列队列的实现★3. 表达式求值(中缀表达式转后缀表达式的算法、后缀表达式求值算法)4. 栈的性质,用栈来生成序列第3章字符串(教材中本章作者为许卓群)一. 概念1. 串2. 模式匹配二. 方法1. 串的基本操作2. 串的存储★ 3. 串的KMP快速模式匹配算法(next数组),求特征next数组(N数组)和利用next数组完成匹配的方法第4章二叉树(教材中本章作者为杨冬青)一. 概念1. 二叉树2.二叉树的前序、中序、后序周游3. 二叉排序树4. 穿线树(中序、前序、后序)5. Huffman树、Huffman编码6. 堆、堆排序二. 方法1.二叉树的链式存储(1)二叉链表(2)带父指针的三重链表2. 二叉树的顺序存储完全二叉树的顺序存储★3. 使用栈(前、中、后序)周游二叉树(注意,不要使用带GOTO语句的机械消除递归的方法)、使用队列层次地周游二叉树,在周游过程中寻找某个结点或进行某种操作 (结合应用,例如穿线树,或把快速排序转换成非递归形式)4. 二叉检索树的插入与删除5. 构造Huffman树,利用Huffman树进行编码、解码6. 堆排序的建堆过程第5章树(教材中本章作者为杨冬青)一. 概念1. 树、森林2. 树、森林的先根周游、后根周游、层次周游二. 方法1. 树林与二叉树相互转换2.森林的链式存储(1) 转换为相应的二叉树,用二叉链表表示(2) 父指针表示法(3) 子结点表表示法3. 森林的顺序存储不必死记各种顺序存储方法,要了解原理。

实用数据结构基础(第四版)课后习题

实用数据结构基础(第四版)课后习题

一、判断题(第一章绪论)1.数据元素是数据的最小单元。

答案:错误2.一个数据结构是由一个逻辑结构和这个逻辑结构上的基本运算集构成的整体。

答案:错误3.数据的存储结构是数据元素之间的逻辑关系和逻辑结构在计算机存储器内的映像。

答案:正确4.数据的逻辑结构是描述元素之间的逻辑关系,它是依赖于计算机的。

答案:错误5.用语句频度来表示算法的时间复杂度的最大好处是可以独立于计算机的软硬件,分析算法的时间答案:正确(第二章线性表)6.取顺序存储线性表的第i个元素的时间同i的大小有关。

答案:错误7.线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。

答案:正确8.线性链表的每一个节点都恰好包含一个指针域。

答案:错误9.顺序存储方式的优点的存储密度大,插入和删除效率不如练市存储方式好。

答案:正确10.插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。

答案:错误(第三章栈)11.栈是一种对进栈和出栈作了限制的线性表。

答案:错误12.在C(或C++)语言中设顺序栈的长度为MAXLEN,则top=MAXLEN表示栈满。

答案:错误13.链栈与顺序栈相比,其特点之一是通常不会出现满栈的情况。

答案:正确14.空栈就是所有元素都为0上的栈。

答案:错误15.将十进制数转换为二进制数是栈的典型应用之一。

答案:正确(第四章队列)16.队列式限制在两端进行操作的线性表。

答案:正确17.判断顺序队列为空的标准是头指针和尾指针都指向同一结点。

答案:错误18.在循环链列队中无溢出现像。

答案:错误19.在循环队列中,若尾指针rear大于头指针front,则元素个数为rear-front。

答案:正确20.顺序队列和循环队列关于队满和队空的判断条件是一样的。

答案:错误(第五章串)21.串是n个字母的有限序列。

答案:错误22.串的堆分配存储是一种动态存储结构。

答案:正确23.串的长度是指串中不同字符的个数。

《数据结构》习题集:第9章查找(第1次更新2019-5)

《数据结构》习题集:第9章查找(第1次更新2019-5)

第9章查找一、选择题1.顺序查找一个共有n个元素的线性表,其时间复杂度为(),折半查找一个具有n个元素的有序表,其时间复杂度为()。

【*,★】A.O(n)B. O(log2n)C. O(n2)D. O(nlog2n)2.在对长度为n的顺序存储的有序表进行折半查找,对应的折半查找判定树的高度为()。

【*,★】A.nB.C.D.3.采用顺序查找方式查找长度为n的线性表时,平均查找长度为()。

【*】A.nB. n/2C. (n+1)/2D. (n-1)/24.采用折半查找方法检索长度为n的有序表,检索每个元素的平均比较次数()对应判定树的高度(设高度大于等于2)。

【**】A.小于B. 大于C. 等于D. 大于等于5.已知有序表(13,18,24,35,47,50,62,83,90,115,134),当折半查找值为90的元素时,查找成功的比较次数为()。

【*】A. 1B. 2C. 3D. 46.对线性表进行折半查找时,要求线性表必须()。

【*】A.以顺序方式存储B. 以链接方式存储C.以顺序方式存储,且结点按关键字有序排序D. 以链接方式存储,且结点按关键字有序排序7.顺序查找法适合于存储结构为()的查找表。

【*】A.散列存储B. 顺序或链接存储C. 压缩存储D. 索引存储8.采用分块查找时,若线性表中共有625个元素,查找每个元素的概率相同,假设采用顺序查找来确定结点所在的块时,每块应分()个结点最佳。

【**】A.10B. 25C. 6D. 6259.从键盘依次输入关键字的值:t、u、r、b、o、p、a、s、c、l,建立二叉排序树,则其先序遍历序列为(),中序遍历序列为()。

【**,★】A.abcloprstuB. alcpobsrutC. trbaoclpsuD. trubsaocpl10.折半查找和二叉排序树的时间性能()。

【*】A.相同B. 不相同11.一棵深度为k的平衡二叉树,其每个非终端结点的平衡因子均为0,则该树共有()个结点。

数据结构第九章习题

数据结构第九章习题


13. 关于杂凑查找说法不正确的有几个 ) 【南京 关于杂凑查找说法不正确的有几个( 理工大学 2000 一、16 (1.5分)】 分 (1)采用链地址法解决冲突时,查找一个元素的 )采用链地址法解决冲突时, 时间是相同的 (2)采用链地址法解决冲突时,若插入规定总是 )采用链地址法解决冲突时, 在链首, 在链首,则插入任一个元素的时间是相同的 (3)用链地址法解决冲突易引起聚集现象 ) (4)再哈希法不易产生聚集 ) A. 1 B. 2 C. 3 D. 4

14. 设哈希表长为 ,哈希函数是 设哈希表长为14, H(key)=key%11,表中已有数据的关键字为 , 表中已有数据的关键字为15, 表中已有数据的关键字为 38,61,84共四个,现要将关键字为 的结点加 共四个, , , 共四个 现要将关键字为49的结点加 到表中,用二次探测再散列法解决冲突, 到表中,用二次探测再散列法解决冲突,则放入 的位置是( 的位置是 ) 【南京理工大学 2001 一、15 (1.5分)】 分 A.8 B.3 C.5 D.9 . . . .
第九章 习题
一、 选择题 1.若查找每个记录的概率均等,则在具有 个记录 若查找每个记录的概率均等, 若查找每个记录的概率均等 则在具有n个记录 的连续顺序文件中采用顺序查找法查找一个记录, 的连续顺序文件中采用顺序查找法查找一个记录, 其平均查找长度ASL为( )。【北京航空航天大学 其平均查找长度 为 。 2000 一、8 (2分)】 分 A. (n-1)/2 B. n/2 C. (n+1)/2 D. n .
5.分别以下列序列构造二叉排序树,与用其它 .分别以下列序列构造二叉排序树, 三个序列所构造的结果不同的是( 三个序列所构造的结果不同的是 ) 【合肥工业 大学2000一、4(2分)】 大学 一 ( 分 A.(100,80, 90, 60, 120,110,130) ( , , , , , , ) B.(100,120,110,130,80, 60, 90) ( , , , , , , ) C.(100,60, 80, 90, 120,110,130) ( , , , , , , ) D. (100,80, 60, 90, 120,130,110) , , , , , ,

数据结构第九、十章 作业答案

数据结构第九、十章 作业答案

第九章 查找一、填空题1. 在数据的存放无规律而言的线性表中进行检索的最佳方法是 顺序查找(线性查找) 。

2. 线性有序表(a 1,a 2,a 3,…,a 256)是从小到大排列的,对一个给定的值k ,用二分法检索表中与k 相等的元素,在查找不成功的情况下,最多需要检索 8 次。

设有100个结点,用二分法查找时,最大比较次数是 7 。

3. 假设在有序线性表a[1..20]上进行折半查找,则比较一次查找成功的结点数为1;比较两次查找成功的结点数为 2 ;比较四次查找成功的结点数为 8 ,其下标从小到大依次是1,3,6,8,11,13,16,19______,平均查找长度为 3.7 。

解:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不应当按照公式)1(log 12++=n nn ASL 来计算(即(21×log 221)/20=4.6次并不正确!)。

因为这是在假设n =2m -1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+5×5)=74; ASL =74/20=3.7 !!! 4.折半查找有序表(4,6,12,20,28,38,50,70,88,100),若查找表中元素20,它将依次与表中元素 28,6,12,20 比较大小。

5. 在各种查找方法中,平均查找长度与结点个数n 无关的查找方法是 散列查找 。

6. 散列法存储的基本思想是由 关键字的值 决定数据的存储地址。

7. 有一个表长为m 的散列表,初始状态为空,现将n (n<m )个不同的关键码插入到散列表中,解决冲突的方法是用线性探测法。

如果这n 个关键码的散列地址都相同,则探测的总次数是 n(n-1)/2=( 1+2+…+n-1) 。

(而任一元素查找次数 ≤n-1)8、设一哈希表表长M 为100 ,用除留余数法构造哈希函数,即H (K )=K MOD P (P<=M ), 为使函数具有较好性能,P 应选( 97 )9、在各种查找方法中,平均查找长度与结点个数无关的是哈希查找法 10、对线性表进行二分查找时,要求线性表必须以 顺序 方式存储,且结点按关键字有序排列。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章索引技术
课后习题讲解
1.填空题
⑴在索引表中,每个索引项至少包含()和()等信息
【解答】关键码,关键码对应的记录在存储器中的位置
⑵在线性索引中,()称为稠密索引
【解答】若文件中的每个记录对应一个索引项
⑶分块有序是指将文件划分为若干块,()无序,()有序。

【解答】块内,块间
⑷在分块查找方法中,首先查找(),然后查找相应的()。

【解答】索引表,块
⑸在10阶B—树中根结点所包含的关键码个数最多为(),最少为()。

【解答】9,1
【分析】m阶的B-树中每个结点至多有m棵子树,若根结点不是终端结点,则至少有两棵子树,每个结点中关键码的个数为子树的个数减1。

⑹一棵5阶B—树中,除根结点外,每个结点的子树树目最少为(),最多为()。

【解答】3,5
【分析】m阶的B-树中每个结点至多有m棵子树,除根结点之外的所有非终端结点至少有?m/2?棵子树。

⑺对于包含n个关键码的m阶B—树,其最小高度是(),最大高度是()。

【解答】[logm(n+1)],[logm/2(n+1)/2]
⑻在一棵B—树中删除关键码,若最终引起树根结点的合并,则新树比原树的高度()。

【解答】减少1层
⑼在一棵高度为h的B—树中,叶子结点处于第()层,当向该B—树中插入一个新关键码时,为查找插入位置需读取()个结点。

【解答】h+1,h
【分析】B-树的叶子结点可以看作是外部结点(即查找失败)的结点,通常称为外结点。

实际上这些结点不存在,指向这些结点的指针为空,B-树将记录插入在终端结点中。

⑽对于长度为n的线性表,若采用分块查找(假定总块数和每块长度均接近,用顺序查找确定所在块),则时间复杂性为()。

【解答】O()
2.判断题
⑴在索引顺序表上采用分块查找,在等概率情况下,其平均查找长度不仅与子表个数有关,而且与每一个子表中的对象个数有关。

【解答】对。

分块查找的平均查找长度不仅和文件中记录的个数n有关,而且和每一块中的记录个数t有关,当t取时,ASL取最小值+1。

⑵B—树是一种动态索引结构,它既适用于随机查找,也适用于顺序查找。

【解答】错。

B—树不能进行顺序查找。

⑶对于B—树中任何一个非叶结点中的某个关键码k来说,比k大的最小关键码和比k小的最大关键码一定都在叶结点中。

【解答】对。

⑷在索引顺序表的查找中,对索引表既可以采取顺序查找,也可以采用折半查找。

【解答】对。

因为索引表有序。

⑸m阶B—树中每个结点的子树个数都大于或等于?m/2?。

【解答】错。

m阶的B-树中除根结点之外的所有非终端结点至少有[m/2]棵子树。

若根结点不是终端结点,则至少有两棵子树。

⑹m阶B—树中任何一个结点的左右子树的高度都相等。

【解答】对。

B树都是树高平衡的。

3.对图9-2所示的3阶B—树,分别给出插入关键码为2,12,16,17和18之后的结果。

【解答】插入关键码为2,12,16,17,18之后的结果分别如图9-3中(a)、(b)、(c)、(d)、(e)所示。

4.对上题所示的3阶B—树,分别给出删除关键码为4,8,9之后的结果。

【解答】删除关键码为4,8,10之后的结果如图9-4(a),(b),(c)所示:
5.为什么在内存中使用的B—树通常是3阶的,而不使用更高阶的B—树?
【解答】作为外存上的动态查找,B—树比平衡二叉树的性能要好,但若要作为内存中的查找表,B—树却不一定比平衡二叉树性能好,因为查找等操作的时间性能在m阶B—树上是O(mlogtn)
=O(log2n*(m/log2t))(n为记录个数),而m/log2t>1,故m较大时,O(mlog2n)比平衡的二叉排序树上相应操作的时间O(log2n)大得多。

因此,仅在内存中使用的B—树必须取较小的m,通常取最小值m=3。

6.设有10000个记录,通过分块划分为若干子表并建立索引,那么为了提高查找效率,每一个子表的大小应设计为多大?
【解答】每个子表的大小应为。

学习自测及答案
1.在索引顺序表中,首先查找(),然后再查找相应的(),其平均查找长度等于()。

【解答】索引表,块,查找索引表的平均长度与检索相应块的平均查找长度的和
2.既希望较快的查找又便于线性表动态变化的查找方法是()。

A顺序查找B折半查找C散列查找D索引顺序查找
【解答】D
3.在一个3阶的B—树上,每个结点所含的子树数目最多为()。

【解答】3
4.在一棵m阶的B—树中,当将一个关键码插入某结点而引起该结点分裂时,此结点原有()个关键码;若删去某结点中的一个关键码,而导致结点合并时,该结点原有()个关键码。

【解答】m-1,?m/2?-1
5.当向B—树中插入关键码时,可能引起结点的(),最终可能导致整个B-树的高度(),当从B—树中删除关键码时,可能引起结点(),最终可能导致整个B—树的高度()。

【解答】分裂,增加1,合并,减少1
6.在9阶B—树中,除根结点以外其他非叶子结点中的关键码个数不少于()。

【解答】4
7.当向一棵m阶的B—树做插入操作时,若一个结点中的关键字个数等于(),则必须分裂为两个结点。

A m
B m-1
C m+1
D m/2
【解答】A
8.在一个5阶的B—树上,每个非终端结点所含的子树数最少为()。

A2B3C4D5
【解答】B
9.给定一组记录,其关键码为字母。

记录按照下面的顺序插入一棵空的B—树中:C,S,D,T,A,M,P,I,B,W,N,G,V,R,K,E,H,O,L,J。

请画出插入这些记录后的3阶B—树。

【解答】最后的B—树如图9-5所示。

10.已知一个B+树有5个叶子结点,每个叶子结点中的关键码如图9-6所示,请画出这棵3阶B+树,然后在此3阶B+树中插入关键码65,再画出插入后的B+树。

【解答】该B+树如图9-7所示,插入关键码65后,B+树如图9-8所示。

相关文档
最新文档