mooc数据结构与算法分析课后答案(mooc2023课后作业答案)

分类: 编辑出版问答发布于:2024-06-02 17:05:55ė36053次浏览658条评论

mooc数据结构与算法分析课后答案(mooc2023课后作业答案)

第一讲 绪论

第一章作业

1、数据算法非线性结构是结构数据元素之间存在一种: A、 一对多关系 B、分析 一对多或者多对多关系 C、课后课后 多对多关系 D、答案答案 一对一关系

2、作业数据结构中,数据算法与所使用的计算机无关的是数据的_____ 结构。 A、结构 存储 B、分析 物理 C、课后课后 逻辑 D、答案答案 物理和存储

3、作业算法分析的数据算法目的是: A、 找出数据结构的结构合理性 B、 研究算法中的分析输入和输出的关系 C、 分析算法的效率以求改进 D、 分析算法的易懂性和文档性

4、算法分析的两个主要方面是: A、 空间复杂性和时间复杂性 B、 正确性和简明性 C、 可读性和文档性 D、 数据复杂性和程序复杂性

5、计算机算法指的是: A、 计算方法 B、 排序方法 C、 解决问题的有限运算序列 D、 调度方法

6、计算机算法必须具备输入、输出和_____等5个特性。 A、 可行性、可移植性和可扩充性 B、 可行性、确定性和有穷性 C、 确定性、有穷性和稳定性 D、 易读性、稳定性和安全性

7、链接存储的存储结构所占存储空间( )。 A、 分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针 B、 只有一部分,存放结点值 C、 只有一部分,存储表示结点间关系的指针 D、 分两部分,一部分存放结点值,另一部分存放结点所占单元数

8、线性表若采用链式存储结构时,要求内存中可用存储单元的地址( )。 A、 必须是连续的 B、 部分地址必须是连续的 C、 一定是不连续的 D、 连续或不连续都可以

3-7课后作业

1、x=90; y=100; while(y>0) if(x>100) { x=x-10;y--;} else x++; 求上述程序段的时间复杂度?

2、for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]=0; 求上述程序段的时间复杂度?

3、s=0; for i=0; i<n; i++) for(j=0; j<n; j++) s+=B[i][j]; sum=s; 求上述程序段的时间复杂度?

4、i=1; while(i<=n) i=i*3; 求上述程序段的时间复杂度?

5、x=0; for(i=1; i<n; i++) for (j=1; j<=n-i; j++) x++; 求上述程序段的时间复杂度?

6、x=n; //n>1 y=0; while(x≥(y+1)*(y+1)) y++; 求上述程序段的时间复杂度?

7、试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

8、简述逻辑结构的四种基本关系并画出它们的关系图。

9、存储结构由哪两种基本的存储方法实现?

10、简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

第二讲 线性表

第二章课后测验(3-19)

1、在单链表中,要将s所指结点插入到p所指结点之后,其语句应为( )。
A、s->next=p+1; p->next=s;
B、(*p).next=s; (*s).next=(*p).next;
C、s->next=p->next; p->next=s->next;
D、s->next=p->next; p->next=s;

2、创建一个包括n个结点的有序单链表的时间复杂度是( )。
A、O(1)
B、O(n)
C、O()
D、O(nlog)

3、在一个长度为n的顺序表中,在第i个元素(1≤i≤n+1)之前插入一个新元素时须向后移动( )个元素。
A、n-i
B、n-i+1
C、n-i-1
D、i

4、将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数是( )。
A、n
B、2n-1
C、2n
D、n-1

5、单链表的存储密度( )。
A、大于1
B、等于1
C、小于1
D、不能确定

6、线性表L在( )情况下适用于使用链式结构实现。
A、需经常修改L中的结点值
B、需不断对L进行删除、插入操作
C、L中含有大量的结点
D、L中结点结构复杂

7、顺序表中第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是( )。
A、110
B、108
C、100
D、120

8、向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动的元素个数为( )。
A、8
B、63.5
C、63
D、7

9、在双向链表存储结构中,删除p所指的结点时须修改指针( )。
A、p->next->prior=p->prior; p->prior->next=p->next;
B、p->next=p->next->next; p->next->prior=p;
C、p->prior->next=p; p->prior=p->prior->prior;
D、p->prior=p->next->next; p->next=p->prior->prior;

10、在双向循环链表中,在p指针所指的结点后插入q所指向的新结点,其修改指针的操作是( )。
A、p->next=q; q->prior=p; p->next->prior=q; q->next=q;
B、p->next=q; p->next->prior=q; q->prior=p; q->next=p->next;
C、q->prior=p; q->next=p->next; p->next->prior=q; p->next=q;
D、q->prior=p; q->next=p->next; p->next=q; p->next->prior=q;

第二章课后作业(3-19)

1、将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。

2、设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

3、设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同,也可以不同 )。

4、已知p指向双向循环链表中的一个结点,其结点结构为data、prior、next三个域,写出算法change(p),交换p所指向的结点和它的前缀结点的顺序。

第三讲 栈和队列

第三章 课后测验(3-30)

1、向一个栈顶指针为HS的链栈中插入一个s结点时,则执行( )。
A、HS->next=s;
B、s->next=HS->next;HS->next=s;
C、s->next=HS;HS=s;
D、s->next=HS;HS=HS->next;

2、从一个栈顶指针为HS的链栈中删除一个结点,用x保存被删除结点的值,则执行( )
A、x=HS;HS=HS->next;
B、HS=HS->next;x=HS->data;
C、x=HS->data;HS=HS->next;
D、s->next=Hs;Hs=HS->next;

3、设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4,s6,s5,s1,则栈的容量至少应该是( )。
A、2
B、3
C、5
D、6

4、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为( )。
A、i
B、n-i
C、n-i+1
D、不确定

5、链式栈结点为:(data,link),top指向栈顶.若想摘除栈顶结点,并将删除结点的值保存到x中,则应执行操作( )。
A、x=top->data;top=top->link;
B、top=top->link;x=top->link;
C、x=top;top=top->link;
D、x=top->link;

6、循环队列存储在数组A[0..m]中,则入队时的操作为( )。
A、rear=rear+1
B、rear=(rear+1)%(m-1)
C、rear=(rear+1)%m
D、rear=(rear+1)%(m+1)

7、最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是( )。
A、(rear+1)%n==front
B、rear==front
C、rear+1==front
D、(rear-l)%n==front

8、数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素个数的公式为( )。
A、r-f
B、(n+f-r)%n
C、n+r-f
D、(n+r-f)%n

9、设栈S和队列Q的初始状态为空,元素e1、e2、e3、e4、e5和e6依次进入栈S,一个元素出栈后即进入Q,若6个元素出队的序列是e2、e4、e3、e6、e5和e1,则栈S的容量至少应该是( )。
A、2
B、3
C、4
D、6

10、为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。
A、队列
B、栈
C、线性表
D、有序表

第三章 课后作业(3-30)

1、假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设头指针) ,试编写:(1)置空队;(2)判队空;(3)入队;(4)出队。四个算法。(每小问5分,结构体定义5分,共4*5+5=25分)

2、已知循环队列Q的队头指针为front,队尾指针为rear,队列的最大长度为MaxSize,请分别写出队空、队满、入队、出队,以及求队中元素个数的语句。(每个各5分)

3、假设以I和O分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序列可表示为仅由I和O组成的序列,称可以操作的序列为合法序列,否则称为非法序列。 ①下面所示的序列中哪些是合法的?(每个4分) A. IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO ②通过对①的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。(9分)

4、对于一个栈,如果输入项序列为ABC,试给出全部可能的输出序列,并写出每种序列对应的操作。例如:A进B进C进C出B出A出,产生的序列为CBA。

第四讲 串、数组和广义表

第四章 课后测验(4-6)

1、串下面关于串的的叙述中,( )是不正确的?
A、串是字符的有限序列
B、空串是由空格构成的串
C、模式匹配是串的一种重要运算
D、串既可以采用顺序存储,也可以采用链式存储

2、设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为( )。
A、BA+141
B、BA+180
C、BA+222
D、BA+225

3、设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为( )。
A、13
B、32
C、33
D、40

4、若对n阶对称矩阵A以行序为主序方式将其下三角形的元素(包括主对角线上所有元素)依次存放于一维数组B[1..(n(n+1))/2]中,则在B中确定aij(i<j)的位置k的关系为( )。
A、i*(i-1)/2+j
B、j*(j-1)/2+i
C、i*(i+1)/2+j
D、j*(j+1)/2+i

5、二维数组A的每个元素是由10个字符组成的串,其行下标i=0,1,…,8,列下标j=1,2,…,10。若A按行先存储,元素A[8,5]的起始地址与当A按列先存储时的元素( )的起始地址相同。设每个字符占一个字节。
A、A[8,5]
B、A[3,10]
C、A[5,8]
D、A[0,9]

6、设二维数组A[1.. m,1.. n](即m行n列)按行存储在数组B[1.. m*n]中,则二维数组元素A[i,j]在一维数组B中的下标为( )。
A、(i-1)*n+j
B、(i-1)*n+j-1
C、i*(j-1)
D、j*m+i-1

7、设广义表L=((a,b,c)),则L的长度和深度分别为( )。
A、1和1
B、1和3
C、1和2
D、2和3

8、广义表A=(a,b,(c,d),(e,(f,g))),则Head(Tail(Head(Tail(Tail(A)))))的值为( )。
A、(g)
B、(d)
C、c
D、d

9、设串s1=“ ABCDEFG”,s2=“ PQRST”,函数strconcat(s,t)返回s和t串的连接串,strub(s,i,j)返回串s中从第i个字符开始的、由连续j个字符组成的子串。 Strlength(s)返回串s的长度。则 strconcat(straub(s1,2,strength(s2)),strub(s1, strength( s2),2))的结果串是( ) 。
A、“BCDEF”
B、“BCDEFG”
C、“BCPQRST”
D、“BCDEFEF”

10、串“ababaaababaa”的next函数值为( )。
A、012345678999
B、012121111212
C、011234223456
D、0123012322345

第四章 课后作业(4-6)

1、已知:s1= “I’m a student”,s2=”student”,s3=”teacher”,试求下列各操作的结果: (1)strLength(s1); (2)strcat(s2,s3); (3)strDelete(s1,4,10)。

2、设目标为t=“acabaabaabcacaabc”,模式为p=“abaabcac” (1) 计算模式p的next函数值; (2) 不写出算法,只画出利用KMP算法进行模式匹配时每一趟的匹配过程。

3、数组A中,每个元素A[i,j]的长度均为32个二进位,行下标从-1到9,列下标从1到11,从首地址S开始连续存放主存储器中,主存储器字长为16位。求: ① 存放该数组所需多少单元? ② 存放数组第4列所有元素至少需多少单元? ③ 数组按行存放时,元素A[7,4]的起始地址是多少? ④ 数组按列存放时,元素A[4,7]的起始地址是多少?

4、广义表((a,b,c,d))的表头是什么?表尾是什么?

5、请将香蕉banana用工具 H( )—Head( ),T( )—Tail( )从L中取出。L=(apple,(orange,(strawberry,(banana)),peach),pear)。

第五讲 树和二叉树

第五章 课后测验(4-21)

1、在一棵度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶子结点个数是( )。
A、41
B、82
C、113
D、122

2、树是结点的有限集合,它有且只有一个根结点,记为T。其余结点分成为m(m>0)个互不相交的集合T1,T2,…,Tm,每个集合又都是树,此时结点T称为Ti的父结点,T i称为T的子结点(1≤i≤m)。一个结点的子结点个数称为该结点的( )。
A、权
B、维数
C、度数
D、序

3、一个具有1025个结点的二叉树的高h为( )。
A、11
B、10
C、11至1025之间
D、10至1024之间

4、深度为h的满m叉树的第k层有( )个结点。(1=<k=<h)
A、
B、
C、
D、

5、对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,同一结点的左右孩子中,其左孩子的编号小于其右孩子的编号,可采用( )遍历实现编号。
A、先序
B、中序
C、后序
D、从根开始按层次遍历

6、若二叉树采用二叉链表存储结构,要交换其所有分支结点左、右子树的位置,利用( )遍历方法最合适。
A、先序
B、中序
C、后序
D、层序

7、一棵非空的二叉树的先序遍历序列与后序遍历序列正好相反,则该二叉树一定满足( )。
A、所有的结点均无左孩子
B、所有的结点均无右孩子
C、只有一个叶子结点
D、是任意棵二叉树

8、设哈夫曼树中有199个结点,则该哈夫曼树中有( )个叶子结点。
A、99
B、100
C、101
D、102

9、引入二叉线索树的目的是( )。
A、加快查找结点的前驱或后继的速度
B、为了能在二叉树中方便的进行插入与删除
C、为了能方便的找到双亲
D、使二叉树的遍历结果唯一

10、设F是一个森林,B是由F变换得的二叉树。若F中有n个非终端结点,则B中右指针域为空的结点有( )个。
A、n-1
B、n
C、n+1
D、n+2

第五章 课后作业(4-22)

1、设一棵二叉树的先序序列: A B D F C E G H,中序序列: B F D A G E H C ①画出这棵二叉树。 ②画出这棵二叉树的后序线索树。 ③将这棵二叉树转换成对应的树(或森林)。

2、假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10。 ① 试为这8个字母设计赫夫曼编码。 ② 试设计另一种由二进制表示的等长编码方案。 ③ 对于上述实例,比较两种方案的优缺点。

3、已知下列字符A、B、C、D、E、F、G的权值分别为3、12、7、4、2、8,11,试填写出其对应哈夫曼树HT的存储结构的初态和终态。

4、已知一棵二叉树的前序遍历序列和中序遍历序列分别为ABCDEFGHI 和BCAEDGHFI,请画出该二叉树。

5、以二叉链表作为二叉树的存储结构,编写统计二叉树的叶结点个数的算法。

第六讲 图

第六章 课后测验(5-2)

1、具有n个顶点的有向图最多有( )条边。
A、n
B、n(n-1)
C、n(n+1)
D、

2、G是一个非连通无向图,共有28条边,则该图至少有( )个顶点。
A、7
B、8
C、9
D、10

3、若从无向图的任意一个顶点出发进行一次深度优先搜索可以访问图中所有的顶点,则该图一定是( )图。
A、非连通图
B、连通图
C、强连通图
D、有向图

4、用邻接表表示图进行广度优先遍历时,通常借助( )来实现算法。
A、栈
B、队列
C、树
D、图

5、用邻接表表示图进行深度优先遍历时,通常借助( )来实现算法。
A、栈
B、队列
C、树
D、图

6、广度优先遍历类似于二叉树的( )。
A、前序遍历
B、中序遍历
C、后序遍历
D、层序遍历

7、图的BFS生成树的树高比DFS生成树的树高( )。
A、小
B、相等
C、小或相等
D、大或相等

8、设有向图G=(V,E),顶点集V={ V0,V1,V2,V3},边集 E={ <v0,v1>,<v0,v2>,<v0,v3>,<v1,v3>},若从顶点 V0开始对图进行深度优先遍历,则可能得到的不同遍历序列个数是( )。
A、2
B、3
C、4
D、5

9、已知图的邻接表如下图所示,则从顶点v0出发按广度优先遍历的结果是( )。
A、0 1 3 2
B、0 2 3 1
C、0 3 2 1
D、0 1 2 3

10、下面( )方法可以判断出一个有向图是否有环。
A、深度优先遍历
B、拓扑排序
C、求最短路径
D、求关键路径

第六章 课后作业(5-2)

1、已知图的邻接矩阵如图所示。试分别画出自顶点1出发进行遍历所得的深度优先生成树和广度优先生成树。

2、已知如下图所示的无向网,请给出: ① 邻接矩阵; ② 邻接表; ③ 最小生成树。

3、有向网如下图所示,试用迪杰斯特拉算法求出从顶点a到其他各顶点间的最短路径,完成表1。 表1

4、请判断下面2个图是否能输出拓扑序列,能输出拓扑序列的请写出其拓扑排序后的拓扑序列(按顶点下标由小到大输出),不能输出的说明原因。 图1 图2

第七讲 查找

第七章 课后测验(5-10)

1、对n个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为( )。
A、(n-1)/2
B、n/2
C、(n+1)/2
D、n

2、如果要求一个线性表既能较快的查找,又能适应动态变化的要求,最好采用( )查找法。
A、顺序查找
B、折半查找
C、分块查找
D、哈希查找

3、折半查找有序表(4,6,10,12,20,30,50,70,88,100)。若查找表中元素58,则它将依次与表中( )比较大小,查找结果是失败。
A、20,70,30,50
B、30,88,70,50
C、20,50
D、30,88,50

4、折半搜索与二叉排序树的时间性能( )。
A、相同
B、完全不同
C、有时不相同
D、数量级都是O()

5、分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是( )。
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)

6、在平衡二叉树中插入一个结点后造成了不平衡,设最低的不平衡结点为A,并已知A的左孩子的平衡因子为0右孩子的平衡因子为1,则应作( )型调整以使其平衡。
A、LL
B、LR
C、RR
D、RL

7、下面关于哈希查找的说法,正确的是( )。
A、哈希函数构造的越复杂越好,因为这样随机性好,冲突小
B、除留余数法是所有哈希函数中最好的
C、不存在特别好与坏的哈希函数,要视情况而定
D、哈希表的平均查找长度有时也和记录总数有关

8、下面关于哈希查找的说法,不正确的是( )。
A、采用链地址法处理冲突时,查找一个元素的时间是相同的
B、采用链地址法处理冲突时,若插入规定总是在链首,则插入任一个元素的时间是相同的
C、用链地址法处理冲突,不会引起二次聚集现象
D、用链地址法处理冲突,适合表长不确定的情况

9、设哈希表长为14,哈希函数是H(key)=key%11,表中已有数据的关键字为15,38,61,84共四个,现要将关键字为49的元素加到表中,用二次探测法解决冲突,则放入的位置是( )。
A、8
B、3
C、5
D、9

10、采用线性探测法处理冲突,可能要探测多个位置,在查找成功的情况下,所探测的这些位置上的关键字 ( )。
A、不一定都是同义词
B、一定都是同义词
C、一定都不是同义词
D、都相同

第七章 课后作业(5-10)

1、假定对有序表:(3,4,5,7,24,30,42,54,63,72,87,95)进行折半查找,试回答下列问题: ① 画出描述折半查找过程的判定树; ② 若查找元素54,需依次与哪些元素比较? ③ 若查找元素90,需依次与哪些元素比较? ④ 假定每个元素的查找概率相等,求查找成功时的平均查找长度。

2、已知如下所示长度为12的表:(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec) ① 试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。 ② 若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。 ③ 按表中元素顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

3、在一棵空的二叉排序树中依次插入关键字序列为12,7,17,11,16,2,13,9,21,4,请画出所得到的二叉排序树,并写出其中序遍历序列。

4、设哈希表的地址范围为0~17,哈希函数为:H(key)=key%16。用线性探测法处理冲突,输入关键字序列:(10,24,32,17,31,30,46,47,40,63,49),构造哈希表,试回答下列问题: ① 画出哈希表的示意图; ② 若查找关键字63,需要依次与哪些关键字进行比较? ③ 若查找关键字60,需要依次与哪些关键字比较? ④ 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

第八讲 排序

第八章 课后测验(5-31)

1、从未排序序列中依次取出元素与已排序序列中的元素进行比较,将其放入已排序序列的正确位置上的方法,这种排序方法称为( )。
A、递归排序
B、冒泡排序
C、插入排序
D、选择排序

2、从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为( )。
A、归并排序
B、冒泡排序
C、插入排序
D、选择排序

3、下列关键字序列中,( )是堆。
A、16,72,31,23,94,53
B、94,23,31,72,16,53
C、16,53,23,94,31,72
D、16,23,53,31,94,72

4、堆是一种( )排序。
A、插入
B、选择
C、交换
D、归并

5、堆的形状是一棵( )。
A、二叉排序树
B、满二叉树
C、完全二叉树
D、平衡二叉树

6、若一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为( )。
A、79,46,56,38,40,84
B、84,79,56,38,40,46
C、84,79,56,46,40,38
D、84,56,79,40,46,38

7、下述几种排序方法中,要求内存最大的是( )。
A、希尔排序
B、快速排序
C、归并排序
D、堆排序

8、下述几种排序方法中,( )是稳定的排序方法。
A、希尔排序
B、快速排序
C、归并排序
D、堆排序

9、数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用( )算法最节省时间。
A、冒泡排序
B、快速排序
C、简单选择排序
D、堆排序

10、下列排序算法中,( )不能保证每趟排序至少能将一个元素放到其最终的位置上。
A、希尔排序
B、快速排序
C、冒泡排序
D、堆排序

第八章 课后作业(5-31)

1、设待排序的关键字序列为{ 12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。 ① 直接插入排序 ② 折半插入排序 ③ 希尔排序(增量选取5,3,1) ④ 冒泡排序

2、设待排序的关键字序列为{ 12,2,16,30,28,10,16*,20,6,18},试分别写出使用以下排序方法,每趟排序结束后关键字序列的状态。 ① 快速排序 ② 简单选择排序 ③ 堆排序 ④ 二路归并排序

期末测验

期末测试(1)

1、算法分析的目的是( )
A、找出数据结构的合理性
B、研究算法中的输入和输出的关系
C、分析算法的效率以求改进
D、分析算法的易懂性和文档性

2、适用于折半查找的表的存储方式及元素排列要求为( )。
A、链接方式存储,元素无序
B、链接方式存储,元素有序
C、顺序方式存储,元素无序
D、顺序方式存储,元素有序

3、设矩阵A是一个对称矩阵,为了节省存储,将其下三角部分(如下图所示)按行序存放在一维数组B[1, n(n-1)/2]中,对下三角部分中任一元素ai,j(i≤j), 在一维数组B中下标k的值是( )。
A、i(i-1)/2+j-1
B、i(i-1)/2+j
C、i(i+1)/2+j-1
D、i(i+1)/2+j

4、为解决计算机主机与打印机间速度不匹配问题,通常设一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。
A、队列
B、栈
C、线性表
D、有序表

5、已知图的邻接表如下图所示,则从顶点v0出发按广度优先遍历的结果是( )。
A、0 1 3 2
B、0 2 3 1
C、0 3 2 1
D、0 1 2 3

6、一个递归算法必须包括( )。
A、递归部分
B、终止条件和递归部分
C、迭代部分
D、终止条件和迭代部分

7、一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )。
A、250
B、500
C、254
D、501

8、数据表中有10000个元素,如果仅要求求出其中最大的10个元素,则采用( )算法最节省时间。
A、冒泡排序
B、快速排序
C、简单选择排序
D、堆排序

9、设串s1=“ ABCDEFG”,s2=“ PQRST”,函数strconcat(s,t)返回s和t串的连接串,strub(s,i,j)返回串s中从第i个字符开始的、由连续j个字符组成的子串。 Strlength(s)返回串s的长度。则 strconcat(straub(s1,2,strength(s2)),strub(s1, strength( s2),2))的结果串是( ) 。
A、“BCDEF”
B、“BCDEFG”
C、“BCPQRST”
D、“BCDEFEF”

10、下列关键字序列中,( )是堆。
A、16,72,31,23,94,53
B、94,23,31,72,16,53
C、16,53,23,94,31,72
D、16,23,53,31,94,72

期末测试(2)

1、设有一组关键字(9,01,23,14,55,20,84,27),采用哈希函数:H(key)=key %7 ,表长为10,用开放地址法的二次探测法处理冲突。要求:对该关键字序列构造哈希表,并计算查找成功的平均查找长度。

2、以二叉链表作为二叉树的存储结构,编写算法:用按层次顺序遍历二叉树的方法,统计树中具有度为1的结点数目。

3、设一棵二叉树的先序序列: A B D F C E G H,中序序列: B F D A G E H C ①画出这棵二叉树。 ②画出这棵二叉树的后序线索树。 ③将这棵二叉树转换成对应的树(或森林)。

4、有向网如下图所示,试用迪杰斯特拉算法求出从顶点a到其他各顶点间的最短路径,完成表1。 表1

5、已知如下图所示的无向网,请给出: ① 邻接矩阵; ② 邻接表; ③ 最小生成树。

6、已知如下所示长度为12的表:(Jan, Feb, Mar, Apr, May, June, July, Aug, Sep, Oct, Nov, Dec) ① 试按表中元素的顺序依次插入一棵初始为空的二叉排序树,画出插入完成之后的二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。 ② 若对表中元素先进行排序构成有序表,求在等概率的情况下对此有序表进行折半查找时查找成功的平均查找长度。 ③ 按表中元素顺序构造一棵平衡二叉排序树,并求其在等概率的情况下查找成功的平均查找长度。

7、设计一个算法,通过一趟遍历在单链表中确定值最大的结点。



Ɣ回顶部