数据结构自考题汇总

上传人:ta****u 文档编号:189330297 上传时间:2023-02-22 格式:DOCX 页数:18 大小:392.98KB
收藏 版权申诉 举报 下载
数据结构自考题汇总_第1页
第1页 / 共18页
数据结构自考题汇总_第2页
第2页 / 共18页
数据结构自考题汇总_第3页
第3页 / 共18页
资源描述:

《数据结构自考题汇总》由会员分享,可在线阅读,更多相关《数据结构自考题汇总(18页珍藏版)》请在装配图网上搜索。

1、14. 下面程序段的时间复杂度是 O(mn) 。for (int i=1;i=n;i+)for (int j=1;jnext;int n=0;while (p!=NULL)if (p-data=m)n+; p=p-next;return n;/ count2已知非空单链表head,试设计一个算法,交换p所指结点与其后继结点在链表中的位置。 解答:int revers(listnode *head, listnode *p)/*交换p所指结点与其后继结点在链表中的位置*/ if (p-next=NULL) return 0 ;listnode *q=head;while (q-next!=p)

2、q=q-next; r=p-next;q-next=r; p-next =r-next ; r-next=p; return 1;/ revers3. 线性表用带头结点的单向链表示,试写出删除表中所有data域为零的元素的算法。 解答:解:int DeleteItem(Node * head) Node *p=head;/声明指针p,并令其指向链表头结点while (p-next!=NULL) if(p-nex-data=0) p-next=p-next-next.else p=p-next; /指针下移4. 试设计一算法,计算带头结点的单链表head(head指向表头)的结点个数。 解答:i

3、nt Length( )/计算带表头结点的单链表head的长度Node *p=head-next;int count=0;while (p!=NULL)p=p-next; count +;return count;5. 判断单链表head(head指向表头)是否是递增的。解答【编者注:链表无头结点】int order(Node *head)Node *p=head; while(p-next!=NULL) if(p-datanext-data)p=p-next;elsebreak;if(p-next=NULL)return 1;elsereturn 0;6. 设计一个算法,在一个单链表head

4、中找出值最小的元素。 解答【编者注:链表无头结点】int Min(Node * head )/在单链表head中找出值最小的元素 Node *p=head;int min=p-data;while (p-next!=NULL) if(p-next-datanext-data; p=p-next;return min;7设有两个单链表L和L1,其结点结构为(data,next),试编写算法判断链表L1中的各元素是否都是单链表 L中的元素。解答:int SubLnk(Node *L, Node *L1)Node *p1=L1;while(p1!=NULL)Node *p=L;while(p!=NU

5、LL)&(p1-data!=p-data)p=p_next;if (p=NULL) return 0; /【编者注:L1中元素未在L中】 else p1=p1_next;return 1;9设有一个正整数序列组成带头结点的单链表head,试编写算法确定在序列中比正整数x大的数有几个。 (8分)解答:int count(Node * head,int x)在带头结点的单链表head中,确定序列中比正整数x大的数有几个Node *p=head_next;int count=0;while (p!=NULL) if (p_datax) count +;p=p_next;return count; 算

6、法count结束五333333333333333333333333333333333333333333333333333333333333333335. 对于栈操作数据的原则是(后进先出)。 13对于栈操作数据的原则是(后进先出 )14.设输入序列为A,B,C,D,借助一个栈不可以得到的输出序列是(D,A,B,C )。19. 因此在初始为空的队列中插入元素a,b,c,d以后,紧接着作了两次删除操作,此时的队尾元素是(d).20. 一般情况下,将递归算法转换成等价的非递归算法应该设置(堆栈)。25.设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为(cabdef)

7、。37. 因此在初始为空的队列中插入元素 a,b,c,d 以后,紧接着作了两次删除操作,此时的队尾元素是 (d )。41栈和队列的主要区别在于(插入删除运算的限定不一样)48. 链栈和顺序栈相比,有一个较明显的优点是(通常不会出现栈满的情况)。50. 设一个栈的输入序列是 1,2,3,4,5,则下列序列中,是栈的合法输出序列的是(3 2 1 5 4)。 72.单链表表示的链式队列的队头在链表的什么位置(链头 )。101.链栈和顺序栈相比,有一个较明显的优点是(通常不会出现栈满的情况 )。110. 设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为(0(n)。113.设有

8、三个元素X, Y, Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是(ZXY)。123. 栈的插入和删除操作进行的位置在(栈顶)。125. 链栈和顺序栈相比,有一个较明显的优点是(通常不会出现栈满的情况)。26循环队列的引入,目的是为了克服 假溢出 。49. 队列中允许进行插入的一端称为队尾。29. 栈和队列的共同特点是插入和删除均在端点处进行。 34队列中允许进行插入的一端称为 队尾。39. 个栈的输入序列是:1, 2, 3则不可能的栈输出序列是3 1 2。40. 设有一个顺序栈S,元素S1, S2, S3, S4, S5, S6依次进栈,如果6个元素的出栈顺序为S2, S3, S4

9、,S6, S5, S1,则顺序栈的容量至少应为3。33333333333333333333333333333333331. 对于一个队列,如果输入项序列由1,2,3,4所组成,试给出全部可能的输出序列。 答:1,2,3,4。4. 将算术表达式a+b* (c+d/e)转为后缀表达式。答: Babcde/+*+13. 将表达式(a+b)-c*(d+e)-f)*(g+h)改写成后缀表达式。答:后缀表达式为:ab+cde+*-f-gh+*14. 将算术表达式a*(b+c)-d转为后缀表达式。答: abc+*d-19. 写出中缀表达式A-(B+C/D)*E的后缀形式。答:中缀表达式A-(B+C/D)*E

10、的后缀形式是:ABCD/+E*-。3333333333333333333333333333333333333333333333333333333333316. 一维数组A采用顺序存储结构,每个元素占用6个字节,第6个元素的起始地址为100,则该数组的 首地址是(70)。59. 稀疏矩阵一般采用的压缩存储方法为(三元组表)【编者注:三元组表和十字链表】81.设有数组Ai,j,数组的每个元素长度为3字节,i的值为1到8 , j的值为1到10,数组从内存 首地址BA开始顺序存放,当用以列为主存放时,元素A5, 8的存储首地址为(BA+180 )。126. 对稀疏矩阵进行压缩存储是为了(节省存储空间)

11、。91.二维数组A56的每个元素占5个单元,将其按行优先顺序存储在起始地址为3000的连续的内存单 元中,则元素A45的存储地址为(3145)。四五厂厂厂厂I I I I I I I I I I 厂 I串串串串串串串串串串串串2. 串是(任意有限个字符构成的序列)。12.串是(任意有限个字符构成的序列 )。70. 串是(任意有限个字符构成的序列)。104. 若字符串“1234567”采用链式存储,假设每个字符占用1个字节,每个指针占用2个字节,则该字 符串的存储密度为(33.3%)。四五=树树树树树树树树树= 1.具有n个结点的二叉树采用链接结构存储,链表中存放NULL指针域的个数为(n+1)

12、。3在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加(2)。4某二叉树的前序和后序序列正好相反,则该二叉树一定是什么二叉树(高度等于其结点数)。7. 在非空二叉树的中序遍历序列中,二叉树的根结点的左边应该(只有左子树上的所有结点)。9. 若一棵二叉树具有45个度为2的结点,6个度为1的结点,则度为0的结点个数是(46 )。10. 某二叉树的前序和后序序列正好相同,则该二叉树一定是什么样的二叉树(空或只有一个结点)。15. 结点前序为xyz的不同二叉树,所具有的不同形态为(5 )。17在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于(2h )。21. 对于一棵满二

13、叉树,m个树叶,n个结点,深度为h,则(n=2h+i-1 )。27在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加(2 )。30. 如果T2是由有序树T转换而来的二叉树,那么T中结点的先根序列就是T2中结点的(先根序列)。31. 对于一棵满二叉树,m个树叶,n个结点,深度为h,则(n=2h+i-1 )。38. 深度为h且有多少个结点的二叉树称为满二叉树(2h+1-1)。39某二叉树的前序和后序序列正好相反,则该二叉树一定是的二叉树为(高度等于其结点数)【编者注: 只有一个叶子结点】42.设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为(2hT )【编者注:

14、根结点高度为1】44. 在一棵具有n个结点的二叉树中,所有结点的空子树个数等于(n+1)45. 若一棵二叉树有11个度为2的结点,则该二叉树的叶结点的个数是(12 )。51. 设森林F中有三棵树,第一、第二和第三棵的结点个数分别为m1,m2和m3,则森林F对应的二叉树根结 点上的右子树上结点个数是(m2+m3 )。54. 二叉树的第I层上最多含有结点数为(2i )。【编者注:根结点高度为0】55. 设高度为h的二叉树上只有度为0和度为2的结点,则此类二叉树中所包含的结点数至少为(2h-1 )。56. 如果T2是由有序树T转换而来的二叉树,那么T中结点的先根序列就是T2中结点的(先根序列)。58

15、.有n个叶子的哈夫曼树的结点总数为(2n-1)。60. 若二叉树中度为2的结点有15个,度为1的结点有10个,则叶子结点的个数为(16)。61. 若某完全二叉树的深度为h,则该完全二叉树中具有的结点数至少是(厶-1 )【编者注:根结点高度 为1】62. 任何一棵二叉树的叶结点在其先根、中根、后根遍历序列中的相对位置(肯定不发生变化)。74. 对于一棵满二叉树,m个树叶,n个结点,深度为h,则(n=2h+1-1)【编者注:根结点高度为0】75. 某二叉树的前序和后序序列正好相同,则该二叉树一定是什么样的二叉树(空或只有一个结点)。76. 在一棵具有n个结点的二叉树中,所有结点的空子树个数等于(n

16、+1 )。78. 树中所有结点的度等于所有结点数加(-1 )。79设二叉树根结点的层次为0, 棵高度为h的满二叉树中的结点个数是(2h+1-1)。80.将一棵有50个结点的完全二叉树按层编号,则对编号为25的结点x,该结点(有左孩子,无右孩子)。 83设森林F中有三棵树,第一、第二和第三棵的结点个数分别为m 1,m2和m3,则森林F对应的二叉树根 结点上的右子树上结点个数是 (m2+m3 )。87.用孩子兄弟链表表示一棵树,若要找到结点x的第5个孩子,只要先找到x的第一个孩子,然后(从兄 弟域指针连续扫描4个结点即可)。90.深度为h的满二叉树具有的结点个数为(2h+1-1)。【编者注:根结点

17、高度为0】96在一棵高度为h(假定树根结点的层号为0)的完全二叉树中,所含结点个数不小于(2h )。98.有n个叶子的哈夫曼树的结点总数为(2n-1 )。106.若在一棵非空树中,某结点A有3个兄弟结点(包括A自身),B是A的双亲结点,则B的度为(3)。108. 深度为h的满二叉树所具有的结点个数是(2h+1-1 )。109按照二叉树的定义,具有3个结点的二叉树有多少种(5 )。111. 树中所有结点的度等于所有结点数加(-1)。112. 树中所有结点的度等于所有结点数加(-1)117. 树形结构的特点是:一个结点可以有 ( 多个直接后继)。119.按照二叉树的定义,具有3个结点的二叉树具有的

18、种类为(5 )。127. 结点前序为xyz的不同二叉树,所具有的不同形态为(5 )。128. 若一棵二叉树具有20个度为2的结点,6个度为1的结点,则度为0的结点个数是(21 )。129. 一棵线索二叉树的线索个数比链接个数多( 2 )个。124. 某二叉树的前序和后序序列正好相同,则该二叉树一定是的二叉树为(空或只有一个结点)。122.设树T的度为4,其中度为1, 2, 3和4的结点个数分别为4, 2,1,1则T中的叶子数为(8)。【编者注:公式为n0 = 1 + 兰(i - 1)nii=1222222222222222222222222222222222222222222222222222

19、22222I. 若一棵二叉树有10个叶结点,则该二叉树中度为2的结点个数为 9。3对于一棵二叉树,设叶子结点数为n0,次数为2的结点数为n2,则n0和n2的关系是n0= n2 + 1。6. 深度为h且有2h-1个结点的二叉树称为满二叉树。(设根结点处在第1层)。8. 哈夫曼树是带权路径长度最小的二叉树。9. 二叉树的存储结构有顺序存储结构和链式存储结构。10. 哈夫曼树是 带权路径长度最小 的二叉树。II. 一般树的存储结构有双亲表示法、孩子兄弟表示法和孩子链表表示法。18. 由一棵二叉树的后序序列和中序序列可唯一确定这棵二叉树 。20. 若二叉树的一个叶子结点是某子树的中根遍历序列中的第一个

20、结点,则它必是该子树的后根遍历中的 第一 个结点。22. 具有100个结点的完全二叉树的叶子结点数为 50。25.将一棵树转换成一棵二叉树后,二叉树根结点没有右子树。30. 二叉树的遍历方式有三种:先序遍历、中序遍历、后序遍历。33.若一棵二叉树有15个叶结点,则该二叉树中度为2的结的点个数为14。37.则高度为k的二叉树具有的结点数目,最少为k,最多为2k-1【编者注:根结点高度为1】41. 对于一棵二叉树,设叶子结点数为nO,次数为2的结点数为n2,则n0和n2的关系是n0= n2 + 142. 设某二叉树的后序遍历序列为ABKCBPM,则可知该二叉树的根为M。48. 由一棵二叉树的后序序

21、列和中序序列 可唯一确定这棵二叉树。33333333333333333333333333333333333333333333333333332. 已知一棵二叉树的中序和前序序列如下,求该二叉树的后序序列。中序序列:c, b, d, e, a, g, i, h, j, f前序序列:a, b, c, d, e, f, g, h, i, j答:该二叉树的后序序列为:c,e,d,b,i,j,h,g,f,a3. 为什么说树是一种非线性结构?答:树中的每个结点除了根结点外,其余每个结点有一个直接前驱,但有多个直接后继,所以说树是一种 非线性结构。5. 找出所有这样的二叉树形,其结点在先根次序遍历和中根次序

22、遍历下的排列是一样的。答: 为空树,或为任一结点至多只有右子树的二叉树。1O. 完全二叉树用什么数据结构实现最合适,为什么?答:完全二叉树用一维数组实现最合适。因为完全二叉树保存在一维数组中时,数组内没有空洞,不存在 空间浪费问题;另外,顺序存储方式下,父子结点之间的关系可用公式描述,即已知父(或子)结点寻找 子(或父)结点只需计算一个公式,访问结点方便。但采用链表存储时就存在空间浪费问题,因为每个结 点要另外保存两个链接域,并且寻找结点也不容易。2O 为什么用二叉树表示一般树?答:树的最直观表示是为树中结点设置指向子结点的指针域,对k叉树而言,每个结点除data域外,还有 k个链接域。这样,

23、对一个有n个结点的k叉树来说,共有n*k个指针域,其中n-1个不空,另外n(k-1)+1 个指针域为空,因此,空链接域的比例约为(k-1) /k ,于是导致大量的空间浪费。然而,如果采用二叉 树表示一棵n个结点的树,则树中共有2n个链接域,其中未用到的有n+1个,占所有指针域的比例约为 1/2,空间浪费少很多。另外,因为任何树型结构都可以转换成二叉树,因此,通常用二叉树表示树型结构。 22试找出前序序列和中序序列相同的所有二叉树。解答:空树或缺左子树的单支树。23完全二叉树用什么数据结构实现最合适,为什么?答:完全二叉树用一维数组实现最合适。因为完全二叉树保存在一维数组中时,数组内没有空洞,不

24、存在 空间浪费问题;另外,顺序存储方式下,父子结点之间的关系可用公式描述,即已知父(或子)结点寻找 子(或父)结点只需计算一个公式,访问结点方便。但采用链表存储时就存在空间浪费问题,因为每个结 点要另外保存两个链接域,并且寻找结点也不容易。26我们已经知道,树的先根序列与其对应的二叉树的先根序列相同,树的后根序列与其对应的二叉树的 中根序列相同。那么利用树的先根遍历次序与后根遍历次序,能否唯一确定一棵树?请说明理由。 答:能。因为树的先根序列与其对应的二叉树的先根序列相同,树的后根序列与其对应的二叉树的中根序 列相同,而二叉树的先根序列与二叉树的中根序列能唯一确定一棵二叉树,所以利用树的先根遍

25、历次序与 后根遍历次序,能唯一确定一棵树。28已知一棵二叉树的中序和前序序列如下,求该二叉树的后序序列。中序序列:c, b, d, e, a, g, i, h, j, f 前序序列:a, b, c, d, e, f, g, h, i, j 答:该二叉树的后序序列为:c,e,d,b,i,j,h,g,f,a 39已知一棵二叉树的前序和中序序列,求该二叉树的后序序列。前序序列:A, B,C,D,E,F,G,H,I,J中序序列:C, B,A,F,E,D,I,H,J,G答:后序序列为:C,B,F,E,I,J,H,G,D, A4444444444444444444444444444444444444444

26、444444444四8.设一棵二叉树以二叉链表为存储结构,设计一个算法交换二叉树中每个结点的左子女和右子女。(12分) 解答:void exchange(BinTreeNode * t)if (t!=NULL)BinTreeNode * temp; if(t-lchild!=NULL)|(t-rchild!=NULL)temp= t-lchild; t-lchild= t-rchild; t-rchild= temp;exchange(t-lchild); exchange(t-rchild);10. 设一棵二叉树以二叉链表为存储结构,试设计一个算法计算二叉树中叶子结点的个数。(12分)解答:

27、void countleaf(BinTreeNode * t,int &count) if(t!=NULL)if(t-lchild= =NULL)&(t-rchild= =NULL) count+; (2 分)countleaf(t-lchild,count); countleaf(t-rchild ,count);11. 设一棵二叉树以二叉链表为存储结构,试写一算法求该二叉树上度为2的结点个数。(12分)解答:void count2(bitreptr t,int count)if (t!=NULL)if (t-lchild != NULL) & (t-rchild != NULL)count

28、+;count2 (t-lchild, count);count2 (t-rchild, count);/ count212. 设一棵二叉树以二叉链表为存储结构,试写一算法求该二叉树中最大值(元)。(12分)解答:void maxnode(bitreptr t,int max)if(t!=NULL) (2分)if(t- datamax) max=t-data; (4分)max= maxnode(t-lchild,max); (2 分)max= maxnode(t-rchild,max); (2 分)return max; (2分)/ maxnode55555555555555555555555

29、55555555555555555555555555555555555555555五6. 由二叉树的前序和后序遍历序列能否唯一确定一棵二叉树。若不能请举出反例 答:不能唯一确定一棵二叉树。如下图。12318.画出下图中二叉树的顺序存储结构示意图。答:二叉树的顺序存储结构示意图为:13715A0A2A6A1425. 对于下图所示的二叉树,试分别写出先根遍历、中根遍历和后根遍历该树所得到的先根序列、中根序 列和后根序列。解答:先根遍历的结点序列:ABCEIFJDGHKL 中遍历的结点序列:EICFJBGDKHLA 后根遍历的结点序列:IEJFCGKLHDBA答: 森林转化成的二叉树如下图。33.

30、试找出前序序列和后序序列相同的所有二叉树。 答:空树或只有根结点的二叉树。40把下图中的二叉树转化成森林。42将下图中的二叉树,转换成相应的森林。EHK43. 知二叉树按中根遍历所得到的结点序列为 DCBGEAHFIJK, 按后根遍历所得到的结点序列为 DCEGBFHKJIA,画出该树形结构,并按中根遍历序列进行线索化。中根遍历该树所得到的先根序列、中根序列。中遍历的结点序列:EICFJBGDKHLA答:46先根遍历的结点序列:ABCEIFJDGHKL, 把下图中的二叉树转化成森林。749.有一棵二叉树如下图所示,分别指出其前序、中序遍历的结点序列。答:它的前序序列为:ABCDEFGHIJ,它

31、的中序序列为:CDBAFGEIHJ。52.有二叉树先序序列为:ABCDEF,中序序列为:CBAEDF,试画出该二叉树。 答:二叉树如下图。53根据下图给出的二叉树,求出中序和后序遍历的结点序列。答:先序遍历为: abdcef中序遍历为:dbaefc后序遍历为:dbfeca55555555555555555555555555 图图图图图图图图图图图图11. 在一个有向图中,所有顶点的入度之和等于所有边数(1 )倍【编者改了答案】18. 在一个无向图中,所有顶点的度数之和等于所有边数( 2 )倍。23. 用邻接表表示图进行深度优先遍历时,通常用来实现算法的辅助结构是(栈 )。32.具有n个顶点的有

32、向图最多可包含的有向边的条数是(n(n-l)。34. 任何一个无向连通图的最小生成树(有一棵或多棵 )。47. 有向图中,以顶点v为终点的边的数目,称为顶点v的(入度)。66在一个有向图中,所有顶点的出度之和等于所有边数的倍数是(1 )。67.有n个顶点的图采用邻接矩阵表示,则该矩阵的大小为(n*n )。68.6个顶点的无向图成为一个连通图至少应有边的条数是(5)。71无向图中,所有顶点的度数之和等于所有边数(2)倍。【编者改了答案】82.在一个具有n个顶点的完全无向图的边数为(n(n-1)/2 )。85. 在图形结构中,每个结点的前驱结点数和后续结点数可以有(任意多个 )。)o2e )o92

33、. 个具有n个顶点e条边的无向图中,采用邻接表表示,则所有顶点的邻接表的结点总数为93. 个具有n个顶点的图采用邻接矩阵表示,则该矩阵的大小为(n*n)。94. 一个具有n个顶点e条边的无向图中,采用邻接表表示,则所有顶点的邻接表的结点总数为 114. 用邻接表表示图进行深度优先遍历时,通常采用的辅助存储结构是(栈)。116.在含n个顶点e条边的无向图的邻接矩阵中,零元素的个数为(nZ2e)。118. 使具有30个顶点的无向图成为一个连通图至少应有边的条数是(29)。120. 使具有9个顶点的无向图成为一个连通图至少应有边的条数是(8 )。5.普里姆(Prim)算法适用于边稠密图。7. 图的深

34、度优先搜索方法类似于二叉树的先序遍历13. 图的深度优先遍历序列不是唯一的。16. 图的遍历是指从图中某一顶点出发访问图中全部顶点且使每一顶点仅被 访问一次。17. 在一个图中,所有顶点的度数之和等于所有边的数目的2倍。23.普里姆(Prim)算法适用于边稠密图。 27.若连通网络上各边的权值均不相同,则该图的最小生成树有1棵 。31. 若连通图的顶点个数为n,则该图的生成树的边数为n-1o32. 图的存储结构最常用的有邻接矩阵和邻接表。35. 拓扑排序输出的顶点数小于有向图的顶点数,则该图一定存在环。38. 若连通网络上各边的权值均不相同,则该图的最小生成树有1棵 o47图的存储结构最常用的

35、有邻接表和邻接矩阵。45.设无向图G的顶点数为n,则要使G连通最少有n-1条边。8有n个顶点的无向连通图至少有多少条边?有n个顶点的有向连通图至少有多少条边? 答:有n个顶点的无向连通图至少有n-1条边,有n个顶点的有向连通图至少有n条边。四5555555555555555555555555555555555555555555555五7.求出下图所示有向图的邻接矩阵。答:有向图的邻接矩阵为:0i234027OOq1OO0OOOOOO2OOOO05OO34OOOOOO0OOOOOO40 J15.求出下图所示有向图的邻接表。答:有向图的邻接表为:16求出下图所示无向图的邻接表。1答:无向图的邻接表

36、为:17.用邻接矩阵存储一个包含1000个顶点和1000条边的图,则该图的邻接矩阵中有多少元素?有多少非零 元素? 答:该图的邻接矩阵中有1000*1000个元素。该图的邻接矩阵中有2000个非零元素 27请给出如下图所示的权图的邻接矩阵。答:解:012340,A102781280888388058488808i 38840J36. 已知一个图如下所示,若从顶点0出发求出其广度优先搜索序列。014657解答: 广度优先搜索序列:01234567 =排序排序排序排序排序排序排序排序=8. 排序方法中,从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正 确位置上的方法,

37、称为( 插入排序 )。29一组记录的关键字为45, 80, 55, 40, 42, 85,则利用堆排序的方法建立的初始堆为(85, 80, 55, 40, 42, 45 )。33设有6000个无序的元素,希望用最快的速度挑选出其中前5个最大的元素,最好选用(堆排序)法。35. 排序方法中,从未排序序列中挑选元素,将其放入已排序序列的一端的方法,称为(选择排序)。57.用分划交换排序方法对包含有n个关键的序列进行排序,最坏情况下执行的时间杂度为(0(n2)。 14/1863. 初始序列已经按键值有序时,用直接插入算法进行排序,需要比较的次数为( n-1)。65用冒泡排序法对序列18,16,14,

38、12,10,8从小到大进行排序,需要进行的比较次数是(15 )。73. 一组记录的关键字为45, 80, 55, 40, 42, 85,则利用堆排序的方法建立的初始堆为(85, 80, 55,40, 42, 45 )。84.对于键值序列72,73,71,23,94,16,5,68,76,103用筛选法建堆,开始结点的键值必须为(94 )。97. 若待排序对象序列在排序前已按其排序码递增顺序排序,则采用比较次数最少的方法是(直接插入排 序)。(n)100.在对n个元素进行冒泡排序的过程中,最好情况下的时间复杂性为()o103.若待排序对象序列在排序前已按其排序码递增顺序排序,则采用(直接插入排序

39、)方法比较次数最少。105.用分划交换排序方法对包含有n个关键的序列进行排序,最坏情况下执行的时间杂度为(0(n2 )。21.在直接插入排序、直接选择排序、分划交换排序、堆排序中稳定的排序方法有直接插入排序。33333333333333333333333333333333333333333333333333333333333333339下面列举的是常用的排序方法:直接插入排序,起泡排序,快速排序,直接选择排序,堆排序,归并排 序。试问,哪些排序方法是稳定的?答:起泡排序, 直接插入排序,归并排序是稳定的。21已知数据序列为12,5,9,20,6,31,24,对该数据序列进行排序,试写出冒泡排序

40、每趟的结果。答: 初始键值序列125920 63124第一趟排序5912 6 202431第二趟排序596 12 202431第三趟排序56912 202431【编者改了答案】第四趟排序5691220243131已知数据序列为12,5,9,20,6,31,24,对该数据序列进行排序,试写出归并排序每趟的结果解答:初始键值序列12592063124第一趟排序 51292063124第二趟排序 591220 62431第三趟排序 56912 202431()37. 一组记录的关键字为(52, 56, 26, 12, 69, 85, 33, 48, 70),给出快速排序的过程。解答:【编者:本书对快

41、速排序与其它书不一样】解:52,56,26,12,69,85,33,48, 70错误第一趟排序33,48,26,12,52,85,69,56,70第二趟排序26,12,33,48,52,69,56,70,85第三趟排序12,26,33,48,52,56,70,69,85第四趟排序12,26,33,48,52,56,70,69,85第五趟排序12,26,33,48,52,56,70,69,8538下面列举的是常用的排序方法:直接插入排序,起泡排序,快速排序,直接选择排序,堆排序,归并 排序。试问,哪些排序方法是稳定的?起泡排序, 直接插入排序,归并排序是稳定的。48. 设记录的关键字集合key=

42、51,28,38,86,70,90,7,30,40,25,试写出对key进行渐减增量排序(增量 d = 5,3,1)时,各趟排序结束后的结果。解答:各趟排序结束后的结果。初始状态:51 28388670907304025第一趟排序(d=5):5173040259028388670第二趟排序(d=3):2873040258651389070第三趟排序(d=1):7252830384051708690)四5555555555555555555555555555555555555555555555555555555五34. 一组记录的关键字为(50,79,8,56,32,41,85),给出利用重建堆

43、方法建立的初始堆(堆顶最大) 并给出堆排序的过程。答:1)建立的初始堆为: 85,79,50,56,32,41,82 )堆排序的过程如下:(g)第6次交换47.一组记录的关键字为(52, 56, 26, 12, 69, 85, 33, 48, 70),给出快速排序的过程。解答:【编者:本书对快速排序与其它书不一样】解:52,56,26,12,69,85,33,48,70错误第一趟排序33,48,26,12,52,85,69,56,70第二趟排序26,12,33,48,52,69,56,70,85第三趟排序12,26,33,48,52,56,70,69,85第四趟排序12, 26,33,48,5

44、2,56,70,69,85第五趟排序12, 26,33,48,52,56,70,69,8550.已知8个记录,对应的关键词为: 25,84,21,47,15,27,68,35,20写出快速排序的第一趟排序过程图示。答:初始键值序列2584214715 27683520第一次交换2584214715 27683520f i=2fJ-9 h第二次交换2520214715 27683584iffj扫描交叉252021154727683584jf忤R与R互换mj252021154727683584Rfmjf*分划表152021 2547276835848888888888888888888888888

45、88888查找查找查找查找查找出查找 24. 堆的形状是一棵(完全二叉树 )。36.对有14个数据元素的有序表R14进行折半搜索,搜索到R3的关键码等于给定值,此时元素比较顺 序依次为(R6,R2,R4,R3)。【编者注:下标从0开始】46.对有n个记录的表按记录键值有序建立二叉查找树,在这种情况下,其平均查找长度的量级为 (O(n)。52. 有数据53,30,37,12,45,24,96,从空二叉树开始逐个插入数据来形成二叉查找树,若希望高 度最小,则应选择下面输入序列是( 37,24,12,30,53,45,96)。64. 对有n个记录的有序表采用二分查找,其平均查找长度的量级为(O(lo

46、gn)。69.对有14个数据元素的有序表R14进行折半搜索,搜索到R3的关键码等于给定值,此时元素比较顺 序依次为(R6,R4,R2,R3)。86.对有n个记录的有序表采用二分查找,其平均查找长度的量级为(O(logn)。2115.对有18个元素的有序表作二分(折半)查找,则查找A 3的比较序列的下标为(9、4、2、3)【编 者注:下标从1开始】88有一个有序表为1,3,9,12,32,41,45,62,75,77,82,95,100,当二分查找值为 82 的结点 时,查找成功的比较次数是(4 )。.89.当初始序列已经按键值有序时,用直接插入算法进行排序,需要比较的次数为(n-1 )。 99

47、.二分查找法要求查找表中各元素的键值必须是(递增或递减 )。2在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为2。12.将数据元素2,4,6,8, 10,12,14,16,18,20依次存于一个一维数组中,然后采用折半查找元素12,被比 较过的数组元素的下标依次为5, 8, 6【编者注:下标从1开始,答案已改】19.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数为2。24.在n个结点的顺序表中插入一个结点需平均移动n/2个结点。28在有序表(12,24,36,48,60,72,84)中二分查

48、找关键字72时所需进行的关键字比较次数为2。29. 对半查找是否适合于以链接结构组织的表? 答:对半查找不适合于以链接结构组织的表。30. 请指出中序遍历二叉查找树的结点可以得到什么样的结点序列。 答:中序遍历二叉查找树的结点就可以得到从小到大排序的结点序列。36.在有序表(15,23,24,45,48,62,85)中二分查找关键词23时所需进行的关键词比较次数为2。四五 24. 给定表(40,36,55,6,64,77,9,41),按数据元素在表中的次序构造一棵二叉查找树,并求其平均查找长度。答:构造的二叉查找树如下图,其平均查找长度为11/4。41.给定表(43,36,56,6,64,32

49、,8,41),按数据元素在表中的次序构造一棵二叉查找树,并求其平均查找长 度。解答:根据给定表(43,36,56,6,64,32,8,41),构造的二叉查找树如下图; 其平均查找长度为:23/8。51. 给定表(45,36,56,6,64,32,8,41),按数据元素在表中的次序构造一棵二叉查找树。解答:按数据元素在表中的次序构造一棵二叉查找树为:53. 序表(5, 12, 17, 19, 23, 25, 30, 36, 45, 49, 58)中,用二分法查找关键词 36,进行多少次比 较后查找成功?写出查找过程。解答:经过4次比较查找成功。查找过程如下:5, 12, 17, 19, 23, 25, 30, 36, 45, 49, 58! t ti=1m=6j=11(a) 第1次与25进行比较5, 12, 17, 19, 23, 25, 30, 36, 45, 49, 58 .! t i i=7m=9 j=11(b) 第2次与45进行比较i=8j=85, 12, 17, 19, 23, 25, 30, 36, 45, 49, 58 f ti=7j=85, 12, 17, 19, 23, 25, 30, 36, 45, 49, 5818 / 18m=7m=8(c) 第3次与30进行比较(d )第4次与36进行比较

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!