计算机专业基础综合数据结构(排序)模拟试卷2(题后含答案及解析)
计算机专业基础综合历年真题试卷汇编2

计算机专业基础综合历年真题试卷汇编2(总分:60.00,做题时间:90分钟)一、单项选择题(总题数:16,分数:32.00)1.单项选择题1-40小题。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
(分数:2.00)__________________________________________________________________________________________解析:2.若无向图G=(V,E)中含有7个顶点,要保证图G在任何情况下都是连通的,则需要的边数最少是_______。
(分数:2.00)A.6B.15C.16 √D.21解析:解析:要保证无向图G在任何情况下都是连通的,即任意变动图G中的边,G始终保持连通,首先需要G的任意6个结点构成完全连通子图G1,需n(n-1)/2=6×(6-1)/2=15条边,然后再添一条边将第7个结点与G1连接起来,共需16条边。
3.下列关于图的叙述中,正确的是_______。
Ⅰ.回路是简单路径Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间Ⅲ.若有向图中存在拓扑序列,则该图不存在回路(分数:2.00)A.仅ⅡB.仅Ⅰ、ⅡC.仅Ⅲ√D.仅Ⅰ、Ⅲ解析:解析:第一个顶点和最后一个顶点相同的路径称为回路;序列中顶点不重复出现的路径称为简单路径;回路显然不是简单路径,故Ⅰ错误;稀疏图是边比较少的情况,此时用邻接矩阵的空间复杂度为O(n 2),必将浪费大量的空间,而邻接表的空间复杂度为O(n+e),应该选用邻接表,故Ⅱ错误。
存在回路的有向图不存在拓扑序列,若拓扑排序输出结束后所余下的顶点都有前驱,则说明只得到了部分顶点的拓扑有序序列,图中存在回路,故Ⅲ正确。
4.设图的邻接矩阵A如下所示。
各顶点的度依次是_______(分数:2.00)A.1,2,1,2B.2,2,1,1C.3,4,2,3 √D.4,4,2,2解析:解析:邻接矩阵A为非对称矩阵,说明图是有向图,度为入度加出度之和。
计算机专业(基础综合)模拟试卷213(题后含答案及解析)

计算机专业(基础综合)模拟试卷213(题后含答案及解析)题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.含有n个结点的三叉树的最小高度是( )。
A.nB.[n/3]C.[1og3nn]+1D.[log3(2n+1)]正确答案:D解析:设含有n个结点的三叉树的最小高度为h(为完全三叉树时高度最小),第h层至少有一个结点,至多有3h-1个结点,则有:1+31+32+…+3h-235,98},若在堆排序的第一阶段将该序列建成一个堆(大根堆),那么交换元素的次数为( )。
A.5B.6C.7D.8正确答案:B解析:考查初始堆的构造过程。
首先对以第「n/2」个结点为根的子树筛选,使该子树成为堆,之后向前依次对各结点为根的子树进行筛选,直到筛选到根结点。
序列{48,62,35,77,55,14,35,98)建立初始堆的过程如下所示:如图所示,(a)调整结点77,交换1次;(b)调整结点35,不交换;(c)调整结点62,交换2次;(d)调整结点48,交换3次。
所以上述序列建初始堆,共交换元素6次。
7.一个大型跨国公司的管理者从网络管理中心获得一个A类IP地121.O.O.0,需要划分1000个子网,选择子网号的位长为( )。
A.11B.10C.12D.13正确答案:B解析:该公司需要有1 000个物理网络,加上主机号全0和全1的两种特殊地址,子网数量至少为1002;选择子网号的位长为10,可以用来分配的子网最多为1 024,满足用户要求。
8.在文件系统中,下列关于当前目录(工作目录)的叙述中不正确的是( )。
A.提高文件目录的检索速度B.减少启动硬盘次数C.利用全路径查找文件D.当前目录可以改变正确答案:C解析:当一个文件系统含有许多级时,每访问一个文件,都要使用从树根开始直到树叶(数据文件)为止的、包括各中间节点(目录)名的全路径名。
数据结构模拟试卷及参考答案

数据结构模拟试卷及参考答案一、简答题(共10题,每题10分,共计100分)1. 什么是数据结构?请简要解释。
数据结构是计算机中用于组织和存储数据的方式,它包含了一系列的数据元素,以及这些数据元素之间的关系和操作。
通过使用不同的数据结构,可以更高效地存储、查找和操作数据。
2. 请解释什么是栈,并给出一个栈的应用场景。
栈是一种具有特定操作限制的数据结构,它遵循"先进后出"(LIFO)的原则。
栈的应用场景包括函数调用、表达式求值、撤销操作以及浏览器中的历史记录。
3. 什么是队列?请给出一个队列的实际应用例子。
队列是一种具有特定操作限制的数据结构,它遵循"先进先出"(FIFO)的原则。
一个实际应用例子是操作系统的进程调度,进程按照到达时间加入队列,并按照一定规则出队执行。
4. 请解释什么是链表,并给出一个链表的优点和缺点。
链表是一种动态数据结构,它由一系列节点构成,每个节点包含数据和指向下一个节点的指针。
链表的优点是可以动态地分配内存空间,且插入和删除节点的时间复杂度为O(1)。
缺点是访问链表某个具体节点的时间复杂度为O(n),且需要额外的内存空间存储指针。
5. 请解释什么是树,并给出一个树的实际应用例子。
树是一种分层次的数据结构,它由一系列节点和节点之间的关系构成。
一个实际应用例子是文件系统的目录结构,文件和文件夹通过树的结构进行组织和存储。
6. 请解释什么是图,并给出一个图的实际应用例子。
图是一种由节点和节点之间的连接关系组成的数据结构。
一个实际应用例子是社交网络,人与人之间的关系可以用图来表示,每个人是一个节点,节点之间的连接表示关系。
7. 请解释什么是散列(哈希)表,以及它的优势和劣势。
散列表是一种根据关键字直接访问的数据结构,它通过将关键字映射到表中的位置来实现快速的查找操作。
散列表的优势是查找操作的平均时间复杂度为O(1)。
劣势是如果存在多个关键字映射到同一个位置,就会发生冲突,需要解决冲突问题。
计算机专业(基础综合)模拟试卷152(题后含答案及解析)

计算机专业(基础综合)模拟试卷152(题后含答案及解析)题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.采用邻接表存储的图的广度优先遍历算法类似于树的( )。
A.中根遍历B.先根遍历C.后根遍历D.按层次遍历正确答案:D解析:图的深度优先遍历类似于树的先序遍历;图的广度优先遍历类似于树的层次遍历。
2.图1-1中强连通分量的个数为( )。
A.2B.3C.4D.5正确答案:C解析:在有向图G中,如果两个顶点vi、vj间有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通。
如果有向图G的每两个顶点都强连通,称G是一个强连通图。
有向图的极大强连通子图,称为强连通分量。
本题中可以看出v2、v3、v4同属于一个连通分量,另外v1、v5、v6各自属于一个强连通分量,所以共有4个强连通分量。
3.在计算机中,微程序一般存放在( )。
A.主存储器B.存储器控制器C.控制存储器D.辅助存储器正确答案:C解析:微程序存放在控制存储器中,选C。
注意存控与控存的区别,控存是用来存放微程序,而存控是用来管理协调CPU、DMA控制器等对主存储器访问的部件。
4.在I/O设备控制的发展过程中,最主要的推动因素是( )。
A.提高资源利用率B.提高系统吞吐量C.提高I/O设备与CPU的并行操作程度D.减少主机对I/O控制的干预正确答案:D5.已知循环冗余码生成多项式G(x)=x5+x4+x+1,若信息位为10101100,则冗余码是( )。
A.1101B.1100C.1101D.1100正确答案:B解析:(1)确定生成多项式G(x)=x5+x4+x+1,次数F5,对应位串110011。
(2)在信息位串后补5个0即10101100 00000,对应的多项式xrM(x),(3)用模2不借位除法,计算xrM(x)/G(x)的余数R(x),R(x)就是冗余码。
计算机专业基础综合计算机组成原理(中央处理器)模拟试卷2

计算机专业基础综合计算机组成原理(中央处理器)模拟试卷2(总分:46.00,做题时间:90分钟)一、单项选择题(总题数:9,分数:18.00)1.在CPU中跟踪指令后继地址的寄存器是( )。
A.主存地址寄存器B.程序计数器√C.指令寄存器D.状态条件寄存器2.指令周期是指( )。
A.CPU从主存取出一条指令的时间B.CPU执行一条指令的时间C.CPU从主存取出一条指令加上执行这条指令的时间√D.时钟周期时间3.同步控制是( )。
A.只适用于CPU控制的方式B.只适用于外围设备控制的方式C.由统一时序信号控制的方式√D.所有指令执行时间都相同的方式4.微程序控制器中,机器指令与微指令的关系是( )。
A.每一条机器指令由一条微指令来执行B.每一条机器指令由一段用微指令编成的微程序来解释执行√C.一段机器指令组成的程序可由一条微指令来执行D.一条微指令由若干条机器指令组成5.假设微操作控制信号用C n表示,指令操作码译码器输出用I m表示,节拍电位信号用M k表示,节拍脉冲信号用T i表示,状态反馈信息用B i表示,则硬联线控制器的基本原理可描述为( ),它可用门电路和触发器组成的树型网络来实现。
A.C n =f(I m,T i )B.C n =f(I m,B i )C.C n =f(M k,T i,B i )D.C n =f(I m,M k,T i,B i ) √6.下面描述的RISC机器基本概念中正确的句子是( )。
A.RISC机器不一定是流水CPUB.RISC机器一定是流水CPU √C.RISC机器有复杂的指令系统D.CPU配备很少的通用寄存器7.下列部件中不属于控制器的部件是( )。
A.指令寄存器B.操作控制器C.程序计数器D.状态条件寄存器√8.计算机操作的最小时间单位是( )。
A.时钟周期√B.指令周期C.CPU周期D.微指令周期9.下列说法中正确的是( )。
A.微程序控制方式和硬联线控制方式相比较,前者可以使指令的执行速度更快B.若采用微程序控制方式,则可用μPC取代PCC.控制存储器可以用掩模ROM、E 2 PROM或闪速存储器实现√D.指令周期也称为CPU周期二、设计题(总题数:6,分数:12.00)10.CPU的数据通路如图5.14所示。
数据结构考试试题库含答案解析

数据结构考试试题库含答案解析数据结构习题集含答案⽬录⽬录 (1)选择题 (2)第⼀章绪论 (2)第⼆章线性表 (4)第三章栈和队列 (6)第四章串 (7)第五章数组和⼴义表 (8)第六章树和⼆叉树 (8)第七章图 (11)第⼋章查找 (13)第九章排序 (14)简答题 (19)第⼀章绪论 (19)第⼆章线性表 (24)第三章栈和队列 (26)第四章串 (28)第五章数组和⼴义表 (29)第六章树和⼆叉树 (31)第七章图 (36)第⼋章查找 (38)第九章排序 (39)编程题 (41)第⼀章绪论 (41)第⼆章线性表 (41)第三章栈和队列 (52)第四章串 (52)第五章数组和⼴义表 (52)第六章树和⼆叉树 (52)第七章图 (52)第⼋章查找 (52)第⼀章绪论1.数据结构这门学科是针对什么问题⽽产⽣的?(A )A、针对⾮数值计算的程序设计问题B、针对数值计算的程序设计问题C、数值计算与⾮数值计算的问题都针对D、两者都不针对2.数据结构这门学科的研究内容下⾯选项最准确的是(D )A、研究数据对象和数据之间的关系B、研究数据对象C、研究数据对象和数据的操作D、研究数据对象、数据之间的关系和操作3.某班级的学⽣成绩表中查得张三同学的各科成绩记录,其中数据结构考了90分,那么下⾯关于数据对象、数据元素、数据项描述正确的是(C )A、某班级的学⽣成绩表是数据元素,90分是数据项B、某班级的学⽣成绩表是数据对象,90分是数据元素C、某班级的学⽣成绩表是数据对象,90分是数据项D、某班级的学⽣成绩表是数据元素,90分是数据元素4.*数据结构是指(A )。
A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义5.数据在计算机存储器内表⽰时,物理地址与逻辑地址不相同,称之为(C )。
A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构6.算法分析的⽬的是(C )A、找出数据的合理性B、研究算法中的输⼊和输出关系C、分析算法效率以求改进D、分析算法的易懂性和⽂档型性7.算法分析的主要⽅法(A )。
计算机专业基础综合数据结构集合历年真题试卷汇编2_真题(含答案与解析)-交互

计算机专业基础综合数据结构(集合)历年真题试卷汇编2(总分64, 做题时间90分钟)2. 填空题1.对于具有144个记录的文件,若采用分块查找法,且每块长度为8,则平均查找长度为__________。
【北方交通大学2001二、8】SSS_TEXT_QUSTI分值: 2答案:正确答案:14计算过程如下:144/8=18块,索引表顺序查找,故(18+1)/2+(8+1)/2=14。
2.有一个2000项的表,欲采用等分区间顺序查找方法进行查找,则每块的理想长度是 (1),分成 (2) 块最为理想,平均查找长度是 (3) 。
【中国矿业大学2000一、6(3分)】SSS_TEXT_QUSTI分值: 2答案:正确答案:(1)45 (2)45 (3)46(索引表顺序查找)3.分块检索中,若索引表和各块内均用顺序查找,则有900个元素的线性表分成__________块最好;若分成25块,其平均查找长度为__________。
【北京工业大学1999一、5(2分)】SSS_TEXT_QUSTI分值: 2答案:正确答案:30,31.5(索引表顺序查找)4.执行顺序查找时,储存方式可以是(1),二分法查找时,要求线性表(2),分块查找时要求线性表(3),而散列表的查找,要求线性表的存储方式是(4)。
【山东大学1998一、1(3分)】SSS_TEXT_QUSTI分值: 2正确答案:(1)顺序存储或链式存储 (2)顺序存储且有序(3)块内顺序存储,块间有序 (4)散列存储5.查找是非数值程序设计的一个重要技术问题,基本上分成(1)查找,(2)查找和(3)查找。
处理哈希冲突的方法有(4)、(5)、(6)和(7)。
【华北计算机系统工程研究所1999一(5分)】SSS_TEXT_QUSTI分值: 2答案:正确答案:(1)静态查找表 (2)动态查找表 (3)哈希表 (4)开放定址方法(5)链地址方法 (6)再哈希 (7)建立公共溢出区6.如果按关键码值递增的顺序依次将关键码值插入到二叉排序树中,则对这样的二叉排序树检索时,平均比较次数为__________。
计算机专业基础综合数据结构(树与二叉树)模拟试卷2(题后含答案及解析)

计算机专业基础综合数据结构(树与二叉树)模拟试卷2(题后含答案及解析)题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.设树T的度为4,其中度为1、2、3和4的结点个数分别为4、1、1、1,则T中的叶子数为( )。
A.10B.11C.9D.7正确答案:D解析:根据题中条件可知,1×4+2×1+3+4+1=4+1+1+1+n0,由此可以得出:n0=1×4+2×1+3+4+1一(4+1+1+1)=14—7=7. 知识模块:数据结构2.用下列元素序列(22,8,62,35,48)构造平衡二叉树,当插入( )时,会出现不平衡的现象。
A.22B.35C.48D.62正确答案:C解析:由题中所给的结点序列构造二叉排序树的过程如下图:当插入48后,首次出现不平衡子树,虚线框内即为最小不平衡子树。
知识模块:数据结构3.下面的算法实现了将二叉树中每一个结点的左右子树互换。
addQ(Q,bt)为进队的函数,delQ(Q)为出队的函数,empty(Q)为判别队列是否为空的函数,空白处应填的内容是( )。
typedef struct node{ int data;struct node*lchild,*rchild;}btnode;void exchange(btnode*bt){ btnode*p,*q;if(bt){ addQ(Q,bt);while(!EMPTY(Q)){ p=delQ(Q);q=p->rchild;p一>rchild=p一>lchild;( (1) )=q;if(p->lchild) ( (2) );if(p->rchild)addQ(Q,p->rchild);} }} A.p->lchild,delQ(Q,p一>lchild)B.p->rchild,delQ(Q,p->lchild)C.p->lchild,addQ(Q,p->lchild)D.p->rchild,addQ(Q,p->lchild)正确答案:C 涉及知识点:数据结构4.已知有一棵二叉树,其高度为n,并且有且只有n个结点,那么二叉树的树形有( )种。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机专业基础综合数据结构(排序)模拟试卷2(题后含答案及解析)题型有:1. 单项选择题 2. 综合应用题单项选择题1-40小题,每小题2分,共80分。
下列每题给出的四个选项中,只有一个选项是最符合题目要求的。
1.采用简单选择排序,比较次数与移动次数分别为( )。
A.O(n),O(log2n)B.O(log2n),O(n2)C.O(n2),O(n)D.O(nlog2n),O(n)正确答案:C解析:简单选择排序的关键字比较次数KCN与对象的初始排列无关。
第i 趟选择具有最小关键字对象所需的比较次数总是n—i—1次(此处假定整个待排序对象序列有n个对象)。
因此,总的关键字比较次数为:最坏情况是每一趟都要进行交换,总的对象移动次数为RMN=3(n一1)。
知识模块:数据结构2.就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是( )。
A.堆排序<快速排序<归并排序B.堆排序<归并排序<快速排序C.堆排序>归并排序>快速排序D.堆排序>快速排序>归并排序正确答案:A解析:此题考查的知识点为排序的空间复杂性。
堆排序辅助空间为O(1),快速排序为O(log2n),归并排序为O(n)。
应选A。
知识模块:数据结构3.一组记录的关键码为(25,48,16,35,79,82,23,40,36,72),其中,含有5个长度为2的有序表,按归并排序的方法对该序列进行一趟归并后的结果为( )。
A.16,25,35,48,23,40,79,82,36,72B.16,25,35,48,79,82,23,36,40,72C.16,25,48,35,79,82,23,36,40,72D.16,25,35,48,79,23,36,40,72,82正确答案:A解析:对于(25,48,16,35,79,82,23,40,36,72),(25,48)和(16,35)归并的结果为(16,25,35,48)。
(79,82)和(23,40)归并后的结果为(23,40,79,82),余下的两个记录不归并,所以一趟归并后的结果为(16,25,35,48,23,40,79,82,36,72),本题答案为A。
知识模块:数据结构4.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该序列按从小到大排序,经过一趟冒泡排序后的序列为( )。
A.16,28,34,54,73,62,60,26,43,95B.28,16,34,54,62,73,60,26,43,95C.28,16,34,54,62,60,73,26,43,95D.16,28,34,54,62,60,73,26,43,95正确答案:B解析:冒泡排序每趟经过比较、交换,从无序区中产生一个最大的元素,所以选B。
知识模块:数据结构5.用某种排序方法对线性表(25,84,21,47,15,27,68,35,20)进行排序时,元素序列的变化情况如下:(1)25,84,21,47,15,27,68,35,20 (2)20,15,21,25,47,27,68,35,84 (3)15,20,21,25,35,27,47,68,84 (4)15,20,21,25,27,35,47,68,84 其所采用的排序方法是( )。
A.直接选择排序B.希尔排序C.归并排序D.快速排序正确答案:A解析:可以看到,每趟从无序区中找出一个最大的元素定位,所以答案为A。
知识模块:数据结构6.在对一组记录(50,40,95,20,15,70,60,45,80)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置需比较( )次。
A.1B.2C.3D.4正确答案:C解析:第6趟的结果为(15,20,40,50,70,95,60,45,80),此时插入60,要与95、70和50进行比较,共比较3次,本题答案为C。
知识模块:数据结构7.将两个各有N个元素的有序表归并成一个有序表,其最少的比较次数是( )。
A.NB.2N一1C.2ND.N一1正确答案:A解析:此题考查的知识点是归并排序思想。
当第一个有序表中所有的元素都小于第二个表中元素,或者都大于第二个表中元素时,比较次数最少为N。
知识模块:数据结构8.已知待排序的n个元素可分为n/k个组,每个组包含k个元素,且任一组内的各元素均分别大于前一组内的所有元素和小于后一组内的所有元素,若采用基于比较的排序,其时间下界应为( )。
A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)正确答案:B解析:此题考查的知识点是分块排序的思想。
因组与组之间已有序,故将n /k个组分别排序即可,基于比较的排序方法每组的时间下界为O(klog2k)。
可以用二叉树分治形式描述,最好的情况是树的高度为log2k。
全部时间下界为O(nlog2k)。
应选B。
知识模块:数据结构9.已知关键序列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,19正确答案:A解析:根据题目中给出的序列建立一个堆,并将其调整为小根堆,其过程如下:可以得出调整后的小根堆为3,5,12,8,28,20,15,22,19。
知识模块:数据结构10.归并排序中,归并的趟数是( )。
A.O(n)B.O(log2n)C.O(nlog2n)D.O(n2)正确答案:B解析:此题考查的知识点是归并排序。
第1遍归并的子序列长度为20,第2遍为21,…,第i遍为2i-1,所以由2i-1≥n知,对n个记录的数据集合,总共需要归并log2n次。
应选B。
知识模块:数据结构11.有一组数据(15,9,7,8,20,一1,7,4),用堆排序的筛选方法建立的初始堆为( )。
A.一1,4,8,9,20,7,15,7B.一1,7,15,7,4,8,20,9C.一1,4,7,8,20,15,7,9D.A、B、C均不对正确答案:C解析:此题考查的知识点是堆排序。
应选C。
知识模块:数据结构12.基于比较方法的n个数据的内部排序,最坏情况下的时间复杂度能达到的最好下界是( )。
A.O(nlog2n)B.O(log2n)C.O(n)D.D(n2)正确答案:A解析:此题考查的知识点是各类排序的效率。
理论上可以证明,对于基于关键字之间比较的分类,无论用什么方法都至少需要进行log2(n!)次比较。
由Stirling 公式可知,log2(n!)=nlog2n一1.44n+O(log2n)。
所以基于关键字比较的分类时间的下界是O(nlog2n)。
因此不存在时间复杂性低于此下界的基于关键字比较的分类。
应选A。
知识模块:数据结构13.以下排序方法中,稳定的排序方法是( )。
A.直接插入排序B.直接选择排序C.堆排序D.基数排序正确答案:A解析:下表为各种排序方法的性能比较。
由表可知,本题答案为A。
知识模块:数据结构14.在对一组记录(50,40,95,20,15,70,60,45,80)进行希尔排序时,假定d0=9,d1=4,d2=2,d3=1,则第二趟排序结束后前4条记录为( )。
A.(50,20,15,70)B.(60,45,80,50)C.(15,20,50,40)D.(15,20,80,70)正确答案:C解析:t=3,d0=9,d1=4,d2=2,d3=1,第1趟(d1=4)后的结果为(15,40,60,20,50,70,95,45,80),第2趟(d2=2)后的结果为(15,20,50,40,60,45,80,70,95),本题答案为(15,20,50,40)。
知识模块:数据结构15.在归并排序中,若待排序记录的个数为20,则共需要进行( )趟归并,在第三趟归并中,是把长度为( )的有序表归并为长度为( )的有序表。
A.5,4,8B.6,3,9C.7,4,3D.3,8,2正确答案:A解析:n=20,共需进行[log2n]=5趟归并,第1趟归并后成为10个有序表,第2趟归并后成为5个有序表(每个长度为4),第3趟归并将长度为4个的有序表归并为长度为8的有序表,本题答案为:5,4,8. 知识模块:数据结构综合应用题41-47小题,共70分。
16.已知关键字序列(K1,K2,K3,…,Kn-1)是大根堆。
试写出一算法将(K1,K2,K3,…,Kn-1,Kn)调整为大根堆,并利用调整算法写一个建大根堆的算法。
正确答案:void sift(RecType R[],int n){ //把R[n]调成大堆int j=n;R[0]=R[j];for(i=n/2;i>=1;i=i/2) if(R[0].key>R[i].key){R[j]=R[i];j=i;} else break;R[j]=R[0];} void HeapBuilder(RecType R[],int n){ for(i=2;i<=n;i++)sift(R,i);} 提示:此题考查的知识点是堆的插入算法。
从第n个记录开始依次与其双亲(n/2)比较,若大于双亲则交换,继而与其双亲的双亲比较,以此类推直到根为止。
涉及知识点:数据结构17.最小最大堆(min max Heap)是一种特定的堆,其最小层和最大层交替出现,根总是处于最小层。
最小最大堆中的任一结点的关键字值总是在以它为根的子树中的所有元素中最小(或最大)。
如图所示为一最小最大堆。
(1)画出在图中插入关键字为5的结点后的最小最大堆。
(2)画出在图中插入关键字为80的结点后的最小最大堆。
(3)编写一算法实现最小最大堆的插入功能。
假定最小最大堆存放在数组中,关键字为整数。
正确答案:此题考查的知识点是堆的算法。
将插入的元素放到最后,然后调整,方法同第13题。
(1)加入关键字值为5的结点后,最小最大堆如下图。
(2)加入关键字值为80的结点后,最小最大堆如下图。
(3)从插入位置进行调整,调整过程由下到上。
首先根据元素个数求出插入元素所在层次数,以确定其插入层是最大层还是最小层。
若插入元素在最大层,则先比较插入元素是否比双亲小,如是,则先交换,之后,将小堆与祖先调堆,直到满足小堆定义或到达根结点:若插入元素不小于双亲,则调大堆,直到满足大堆定义。
若插入结点在最小层,则先比较插入元素是否比双亲大,如是,则先交换,之后,将大堆与祖先调堆;若插入结点在最小层且小于双亲,则将小堆与祖先调堆,直到满足小堆定义或到达根结点。
void MinMaxHeapIns(RecType R[],int n){ //假设R[1..n一1]是最小最大堆,插入第n个元素,把R[1..n]调成最小最大堆j=n;R[0]=R[j];h=log2n+1;//求高度if(h%2==0){ //插入元素在偶数层,是最大层i=n/2;if(R[0].key<R[i].key){ //插入元素小于双亲,先与双亲交换,然后调小堆R[j]=R[i];j=i/4;while(j>0&&R[j]>R[i]){ R[i]=R[j];i=j;j=i/4;} //调小堆R[i]=R[0]i } else{ //插入元素大于双亲,调大堆i=n;j=i/4;while(j>0&&R[j]<R[i]){R[i]=R[1];i=j;j=i/4;} R[i]=R[0];} } else{ //插入元素在奇数层,是最小层i=n/2:if(R[0].key>R[i].key){ //插入元素大于双亲,先与双亲交换,然后调大堆R[j]=R[i];j=i/4;while(j>0&&R[j]<R[i]){ R[i]:R[j]=i:j;j=i/4;} //调大堆R[i]=R[0];} else{ //插入元素小于双亲,调小堆i=n;j=i/4;while(j>0&&R[j]>R[i]){ R[i]=R[j];i=j;j=i/4;} R[i]=R[0];} }} 涉及知识点:数据结构18.输入N个只含一位数字的整数,试用基数排序的方法,对这N个数排序。