算法分析试题doc.docx

上传人:b****6 文档编号:6552190 上传时间:2023-01-07 格式:DOCX 页数:14 大小:122.49KB
下载 相关 举报
算法分析试题doc.docx_第1页
第1页 / 共14页
算法分析试题doc.docx_第2页
第2页 / 共14页
算法分析试题doc.docx_第3页
第3页 / 共14页
算法分析试题doc.docx_第4页
第4页 / 共14页
算法分析试题doc.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

算法分析试题doc.docx

《算法分析试题doc.docx》由会员分享,可在线阅读,更多相关《算法分析试题doc.docx(14页珍藏版)》请在冰豆网上搜索。

算法分析试题doc.docx

算法分析试题doc

1-1什么叫数据?

什么叫数据元素?

什么叫数据项?

1-2什么叫数据的物理结构?

什么叫数据的存储结构?

什么叫数据的操作?

1-3数据结构课程主要讨论哪三个方面的问题?

1-4分别画岀线性结构、树结构和图结构的逻辑示意图。

1-5什么叫类型?

什么叫数据类型?

什么叫抽象数据类型?

1-6怎样利用抽象数据类型设计大型软件?

1-7什么叫算法?

算法的5个性质是什么?

1-8根据算法的性质解释算法和程序的区别?

1-9评判算法的优劣有哪几种方法?

1-10什么叫算法的时间复杂度?

怎样表示算法的时间复杂度?

1-11设n为已在算法前边定义的整数类型,并已知n为正整数,分析下列各算法中加下划线语句的执行次数,并给出各算法的吋间复杂度T(n)o

(1)inti=1,k=0;

while(i

{

k=k+10*i:

i二i+1;

}

(2)inti=1,k=0;

do

{

k二k+l()*i:

i二i+1;

}while(i!

=n);

(3)inti=1J=1;

while(i<=n&&j<=n)

{

i=i+l;j=j+1;

}

(4)intx=n;/*n>1*/

inty=0;

while(x>=(y+l)*(y+l))

y++;

(5)inti,j,k,x=0;

for(i=0;i

for(j=0;j

for(k=0;k

x=x+2;

1-12设求解同一个问题有三种算法,三种算法各白的时间复杂度分别为0(/丿,0(2”丿和0(Mgn),哪种算法最可取?

为什么?

1-13按增长率从小到大的顺序排列下列各纽函数:

(1)2,",(3/2)“,(2/3)\(4/3)“

(2)n,n?

Z2>n2Z?

n!

n"

(3)lbn,nxlbn,n

2-1什么叫线性表?

2-2什么叫顺序存储结构?

什么叫链式存储结构?

2-3给出线性表的抽象数据类型定义。

2-4什么叫指针?

什么叫头指针?

什么叫头结点?

2-5什么叫单链表?

什么叫循环单链表?

什么叫循环双向链表?

2-6在链表设计屮,为什么通常采用带头结点的链表结构?

2-7写出C语言动态申请和动态释放内存空间的malloc()函数和free()函数的函数原豐并说明函数中参数的含义。

2-8说明在顺序表屮实现插入操作和删除操作时为什么必须移动数据元素,以及插入操作和删除操作各自移动数据元索的方向?

2-9对比顺序表和单链表,说明顺序表和单链表的主要优点和主耍缺点。

2-10什么叫线性结构?

线性表是线性结构吗?

为什么?

2-11编写一个逐个输出顺序表中所冇数据元素的算法。

2-12编写一个逐个输出单链表屮所有数据元素的算法。

2-13线性表定位操作ListFind(L,x)的功能是:

在线性表L中查找是否存在数据元素x,如果存在,返冋线性表中和x值相等的第1个数据元素的序号(序号编号从0开始;如果不存在,返回-1。

要求编写顺序表的定位操作算法。

2-14在冇些应用中,允许线性表中存在值相同的数据元素。

线性表的另一个删除操作ListDeleteMore(L,x)的功能是:

删除线性表L中所有等于x的数据元素。

耍求编写单链表的删除操作算法。

2-15编写算法实现顺序表的逆置,即要求把顺序表A中的数据元素序列(如,a】,...,亦)逆置为(如亠…,①,ao),并把逆置后的数据元素存储到顺序表B中。

2-16编写算法实现顺序表的就地逆置,即要求利用原顺序表的存储单元,把数据元素序歹!

J(ao,3],...,an-i)逆置为(an.i,...,3j,a())o

2-17编写算法实现单链表的逆置,即要求把单链表la中的数据元素序列(no,%...&.])逆置为(编亠...色,切),并把逆置后的数据元索存储到单链表lb中。

2-18编写算法实现单链表的就地逆置,即要求利用原单链表的结点空间,把数据元素序列(ao,3],...,an.i)逆置为(an_i,...,aj,ao)o

2・19编写循环双向链表的求数据元素个数操作算法和取数据元素操作算法。

3-1什么叫堆栈?

什么叫队列?

3-2线性表、堆栈和队列这三种抽象数据类型有什么相同之处和不同之处?

3-3在顺序队列屮,什么叫真溢出?

什么叫假溢出?

为什么顺序队列通常都采川顺序循环队列结构?

3-4什么叫优先级队列?

优先级队列和队列冇什么相同Z处和不同Z处?

3-5举例说明堆栈、队列和优先级队列的用途。

复杂概念题:

3-6设数据元素序列{a,b,c,d,e,f,g}的进堆栈操作和出堆栈操作可任意进行(排除堆栈为空时的出堆栈操作情况),下列哪些数据元索序列可由出堆栈序列得到:

(1){d,e,c,f,b,g,a};

(2){f,e,g,d,a,c,b};

(3){e,f,d,g,b,c,a};(4){c,d,b,e,f,a,g}

3-7画出借助堆栈把下列屮缀表达式转换成后缀表达式的过程:

A*(B-D)+E/F

3-8对于一个堆栈,

(1)如果输入序列rflA,B,C,D组成,试给出全部町能的输出序列和不可能的输出序列。

(2)设有n个数据元素的序列顺序进栈,试给出可能的输出序列个数。

(3)设有n个数据元素的序列顺序进栈,试给出不可能的输出序列个数。

(4)以n二4为例,用

(2)和(3)中得出的公式验证

(1)的结论。

3-9编写一个判断算术表达式中开括号和闭括号是否配对的算法。

3-10给出采用设證标志位的方法解决“假溢出”问题的顺序循坏队列的初始化操作、入队列操作和出队列操作的算法思想。

3-11设计采用设置标志位方法解决“假溢出”问题的顺序循环队列的初始化操作、入队列操作和出队列操作的函数。

3-12仿照例3・3,编程序判断一个字符序列是否是回文,要求采用链式队列和链式堆栈。

3-13编程序判断一个字符序列是否是回文,要求只使用堆栈,不使用队列。

3-14编写一个顺序优先级队列的出队列操作算法,要求不考虑相同优先级时的先进先出原则。

3-15设顺序双向循环队列的数据结构定义为:

typedefstruet

{

DotaTypelist[MaxSize];

intfront;/*队头指针*/

intrear;/*队尾指针*/

}BSeqCQueue;

设Q为BSeqCQueue类型的变参,并设初始化操作时有:

Q->rear=Q->front=0,现要求:

(1)给出顺序双向循坏队列满和空的条件。

(2)给出顺序双向循环队列的入队列操作和出队列操作算法思想。

4-

1设SI="DataStructureCourse",S2=uStructure,S3二"Base”,求:

4-2什么"I串?

串和字符在存储方法上冇什么不同?

空串和空格串是否相同,为什么?

4-3串是由字符组成的,长度为1的串和字符是否相同。

为什么?

4-4串是不定长的,表示串的长度有几种方法?

C语言屮的串采用哪种方法?

4-5可以说串是数据类型固定为字符类型的线性表,但是申操作和线性表操作的主要不

同Z处在哪里?

4-6可以用几种存储方法存储串?

4-7分别写出串的静态数组存储结构和串的动态数纽存储结构的结构休定义。

4-8为什么动态数组结构下串的实现要增加撤消函数?

4-1设SI=uDataStructureCoursew,S2=uStructure,S3=“Base”,求:

(5)SubString(Sl,5,9,T);(6)Search(SI,0,S2);

(7)Replace(SI,0,S2,S3)

4-2什么叫串?

串和字符在存储方法上有什么不同?

空串和空格串是否相同,为什么?

4-3串是由字符组成的,长度为1的串和字符是否相同。

为什么?

4-4串是不定长的,表示串的长度有儿种方法?

C语言小的串采用哪种方法?

4-5可以说串是数据类型固定为字符类型的线性表,但是串操作和线性表操作的主要不同之处在哪里?

4-6可以用儿种存储方法存储串?

4-7分别写出串的静态数纟F1存储结构和串的动态数组存储结构的结构体定义。

4-8为什么动态数组结构下串的实现要增加撤消函数?

复杂概念题:

4-9令tl="aaab”,t2=“abcabaa”,t3=“abcaabbabcabaacba”,试分别求出他们的next[j]值。

4-10简述模式匹配的Brutc-Forcc算法思想。

简述模式匹配的KMP算法思想。

4-11简述求子串的nextlj]值的算法思想。

4-12设串采用静态数组存储结构,编写函数实现两个串的比较Compare(S,T)。

要求比较结果有等于和不等于两种情况。

4-13设串采用静态数组存储结构,编写函数实现两个串的比SCompare(S,T)。

要求比较结果冇大于、等于和小于三种情况。

编写两数实现两个串的比较Compare(S,T)。

要求比

储结构和串的动态数组存储结构是否对编写串的比较算法冇影响。

4-15设串采用静态数组存储结构,编写函数实现串的替换Replace(S,start,T,V),即耍求在主串S中,从位置start开始查找是否存在子串T,若主串S中存在子串T,则用子串V替换子串T,且函数返回1;若主串S中不存在子串T,则函数返冋0。

4-16设字符串采用静态数组的顺序存储结构,

(1)编写算法删除字符串s中值等于ch的一个字符,并分析该算法的时间复杂度;

(2)编写算法删除字符串s中值等于ch的所有字符。

4-17设字符串采用单字符的链式存储结构,编写删除串s从位置i开始长度为k的子串的算法。

5-1分别写出一维数组和二维数组的存储映彖公式。

5-2什么叫二维数纟R的行序优先存储?

什么叫二维数组的列序优先存储?

C语言采用的是行序优先存储还是列序优先存储?

5-3什么叫随机存储结构?

为什么说数组是一种随机存储结构?

5-4动态数组和静态数组在使用方法上有什么不同?

5-5什么样的矩阵叫特殊矩阵?

特殊矩阵压缩存储的基本思想是什么?

5-6什么样的矩阵叫稀疏矩阵?

稀疏矩阵压缩存储的基木思想是什么?

5-7什么叫稀疏矩阵的三元组?

什么叫稀疏矩阵的三元组线性表?

5-8稀疏矩阵主要有哪些压缩存储结构?

5-9设一个系统中二维数组采用以行序为主的存储方式存储,已知二维数组a[n][m]中每个数据元素占k个存储单元,且第一个数据元素的存储地址是Loc(a[0][0]),求数据元素a[i][j](0WiWn-l,0WjWnrl)的存储地址。

5-10设一个系统屮二维数组采川以行序为主的存储方式存储,已知二维数纽all0JL8]>P每个数据元素占4个存储单元,且第一个数据元素的存储地址是1000,求数据元素a[4][5]的存储地址。

5-11画出一个3行3列二维动态数组存储结构示意图。

5-12対于如下所示的稀疏矩阵A

"0

0

0

0

0

5

0

0

0

0

9

0

0

0

0

0

0

0

0

0

0

0

0

19

0

0

0

0

0

0

0

0

0

0

0

0

22

0

0

0

33

0

0

0

0

0

0

0

0

(1)写出该稀疏矩阵的三元组线性表;

(2)画出稀疏矩阵A的三元组顺序表结构;

(3)画出稀疏矩阵A的带头结点单链表结构;

(4)画出稀疏矩阵A的行指针数组链表结构;

(5)画出稀疏矩阵A的三元组|•字链表结构。

5-13为节省内存,n阶对称矩阵采用压缩存储,要求:

(1)编写实现C=A+B操作的函数。

设矩阵A、矩阵B和矩阵C均采用压缩存储方式存储,矩阵元素均为整数类型。

(2)编写一个采用压缩存储的n阶对称矩阵的输出函数,要求输出显示成矩阵形式,设矩阵元素均为整数类型。

(3)设矩阵A和矩阵B为如下所示的矩阵,编写一个用矩阵A和矩阵B作为测试例了的测试上述函数的主程序。

_123_

「102030_

245

B=

204050

356

305060

5-14试编写实现C=AXB操作的函数。

设矩阵A、矩阵B和矩阵C均采用压缩存储方式存储,矩阵元索均为整数类型。

5-15利用例5-2实现的中请二维动态数组函数和释放二维动态数组函数,编写存储习题5-12矩阵A的数据元素并显示这些元素数值的主函数。

6-1什么叫递归?

6-2适宜于川递归算法求解的问题的充分必要条件是什么?

什么叫递归出口?

6-3阶乘问题的循环结构算法和递归结构算法哪个的时间效率好,为什么?

6-4非递归函数调用时系统要保存哪些信息?

递归函数调用时系统要保存哪些信息?

系统怎样保存递归函数调用时的信息?

6-5什么叫运行时栈?

什么叫运行时栈中的活动记录?

6-6叙述递归算法的执行过程。

6-7推导求解n阶汉诺塔问题要执行的移动操作(即算法中printf()函数的调用)次数。

6-8我们讨论过的折半查找函数设计如下:

intBSearch(elemtypea[],elemtypex,intlow,inthigh)

{

intmid;

if(1ow>high)return-1;

mid=(low+high)/2;

if(x==a[mid])returnmid;

if(x

}

讨论如果把上述折半杳找函数屮最示两语句改为如下形式能否实现算法的设计要求,为什么?

if(x

elseBSearch(a,x,mid+1,high);

6-9要求:

(1)写出求1,2,3,......,n的n个数累加的递推定义式;

(2)编写求1,2,3,……山的“个数累加的递归算法,假设n个数存放在数组a中。

6-10要求:

(1)写出求1,2,3,小的n个数连乘的递推定义式;

(2)编写求1,2,3,小的n个数连乘的递归算法,假设n个数存放在数组a中。

6-11设a是有n个整数类型数据元素的数组,试编写求a中最大值的递归算法。

6-12设计输出如下形式数值的算法。

1

22

333nnn…n

要求:

(1)把算法设计成递归结构的算法;

(2)画出上述递归算法的调用执行过程;

(3)把算法设计成循坏结构。

7-1什么叫冇序树?

什么叫无序树?

一棵度为2的树和一棵二叉树的区别是什么?

7-2什么叫满二义树?

什么叫完全二义树?

举出一个满二义树和一个完全二叉树的例子。

7-3说出具冇3个结点的树和具冇3个结点的二叉树的所冇不同形态的个数,并分别画出他们的形态。

7-4给岀图7・20所示二叉树的先序遍历、中序遍历、后序遍历和层序遍历得到的结点序

列。

图7-20二叉树

7-5简叙线索二叉树的用途和中序线索二叉树的构造方法。

7-6画出图7-20(a)所示二义树的前序线索二叉树、中序线索二叉树和后序线索二叉树。

7-7在一棵二叉树中,什么叫从A结点到B结点的路径?

什么叫从A结点到B结点的路径长度?

什么叫二叉树的路径长度?

7-8在一棵叶结点带权的二叉树中,什么叫二叉树的带权路径长度?

什么叫哈夫曼树?

哈夫曼树有什么用途?

7-9研究树和二叉树相互Z间转换方法的意义是什么?

7・1()画出图7・21所示树的先根遍历和示根遍历得到的结点序列。

图7・21树

7-11把图7・21所示树转换为二义树。

给出该二义树的先序遍历、屮序遍历和后序遍历结果,并对比分析此遍历结果和习题7-1()得出的树的先根遍历和示根遍历结果。

7-12把图7-20所示二叉树转换为树。

7-13画出和下列已知结点序列对应的二叉树:

1)该二叉树的中序遍历结点访问序列为DCBGEAHF1JK;2)该二叉树的后序遍历结点访问序列为DCEGBFHKJIAo

7-14高度为h的完全二叉树屮,最多有多少个结点?

最少有多少个结点?

7-15设二叉树屮所有非叶了结点均有非空左右了二叉树,并且叶了结点数目为n,问:

该二叉树中共冇多少个结点?

7-16假设用于通讯的电文仅由5个字母{A,B,C,D,E}组成,字母在电文中出现的次数分别为2,4,5,7,80试为这5个字母设计哈夫曼编码。

7-17若一棵树有g个度为1的结点,有g个度为2的结点,......,有叫个度为k的结点,问:

树中共有多少个叶结点?

7-18证明:

若哈夫曼树中冇n个叶结点则该哈夫曼树中共冇2n-l个结点。

7-19编写求二叉树中叶结点个数的函数(提示:

这是一个遍历问题)。

7-20编写判断一棵二叉树是否是完全二叉树的函数(提示:

这是一个遍历问题)。

8-1已知图G=(V,E),其中V二{a,b,c,d,e,f,g},E={,,,,,,,,,,,},请画出图G,并画出图G的邻接矩阵和图G的邻接表。

8-2对于图8・17所示的有向图,要求给出:

(1)该有向图的邻接矩阵存储结构;

(2)该冇向图的邻接表存储结构;

(3)设顶点A为访问的第一个顶点,按照邻接矩阵存储结构给出的每个顶点的邻接顶点次序,给出该有向图的深度优先遍历的顶点访问序列。

(4)设顶点A为访问的第一个顶点,按照邻接矩阵存储结构给出的每个顶点的邻接顶点次序,给出该有向图的广度优先遍历的顶点访问序列。

图8-17有向图

8-3对于图8・18所示的无向带权图,要求:

(1)根据普里姆算法思想,画岀构造该无向带权图最小牛成树的过程;

(2)根据克鲁斯卡尔算法思想,画出构造该无向带权图最小生成树的过程。

图8・18无向带权图

8-4对于图8-19所示的有向带权图,根据狄克斯特拉算法思想,血出生成从顶点A到其余各顶点最短路径的过程。

8・5证明:

无向完全图中一定Wn(n-1)/2条边。

8-6证明:

有向完全图中一定有n(n-l)条弧。

8-7编写函数,求邻接矩阵存储结构的有向图G屮各顶点的入度。

8-8编写函数,求邻接矩阵存储结构的有向图G中各顶点的出度。

9-1什么是关键字?

什么是主关键字?

什么是次关键字?

9-2什么是稳定的排序算法?

什么是不稳定的排序算法?

对同一个问题,若有一个算法是稳定的,另一个算法是不稳定的,哪一种算法更好?

9-3什么是内部排序?

什么是外部排序?

9-4设数据元素关键字序列为{475,137,481,219,382,674,350,326,815,506},分别写出执行下列排序算法时,各趟排序后的关键字序列:

(1)希尔排序(增量d=5,3,l)⑵快速排序

(3)堆排序(4)归并排序

(5)基数排序

9-5举例说明直接选择排序是不稳定的排序。

9-6举例说明希尔排序、快速排序和堆排序是不稳定的排序。

9-7判断下列序列是否为堆,若是堆则进一步指出是最大堆还是最小堆。

(1)(50,36,41,19,23,4,20,18,12,22)

(2)(43,5,47,1,19,11,59,15,48,41)

(3)(50,36,41,19,23,20,18,12,22)

(4)(9,13,17,21,22,31,33,24,27,23)

9-8设待排序的关键字序列为{11,4,18,33,29,9,18*,21,5,19},画出堆排序时形成初始堆和第一次堆顶元素第一次交换后堆的变化过程。

9-9编写一个测试希尔排序算法函数ShellSort()的测试主函数。

测试数据为(43,5,47,1,19,11,59,15,48,41)。

9-10设待排序数据元素的关键字为整数类型,编写函数实现在05丿的吋间复朵度内和0(/丿的空间复杂度内重排数组a,使得将所有取负值的关键字排在所有取非负值的关键字Z刖。

9-11编写函数实现单链表类数据元素的直接插入排序。

9-12直接选择排序算法是不稳定的排序算法。

这主要是由于每次从无序记录区选出最小记录后,与无序区的第一个记录交换而引起的,因为交换可能引起关键字相同的数据元素位査发生变化。

如果在选出最小记录后,将它前面的无序记录依次后移,然后再将最小记录放在有序区的后面,这样就能保证排序算法的稳定性。

编写一个稳定的肓接选择排序函数。

10-1什么叫静态查找?

什么叫动态查找?

什么样的存储结构适宜丁•进行静态查找?

什么样的存储结构适宜于进行动态查找?

10-2什么叫平均查找长度?

写出平均查找长度的定义。

10-3索引表由哪几项组成?

什么叫完全索引表?

怎样构造完全索引表?

10-4什么叫等长索引表?

什么叫不等长索引表?

10-5为什么B_树上的查找效率比二叉排序树上的查找效率高?

10-6在哈希表中,发生冲突的可能性与哪些因素冇关?

为什么?

10-7已知一个个数为12的数据元素序列为{Dec,Feb,Nov,Oct,June,Sept,Aug,Apr,May,July,Jan,Mar},要求:

(1)按各数据元索的顺序构造一棵二叉排序树。

(2)设各数据元素的查找概率相等,给出该二叉排序树的平均查找长度。

(注:

字母的大小是指字母的ASCII码数值大小)

10-8对于一棵初始为空的3阶B_树,要求:

(1)给出按数据元素序列{20,30,50,52,60,6&70}构造3阶B—树的图示过程。

(2)给出删除关键字50和68的图示过程。

10-9设有数据元素序列{11,23,35,47,51,60,75,88,90,102,113,126,},用除留余数法构造哈希表,要求:

(1)设计哈希表的长度取值m。

(2)画出用开放定址法的线性探查法解决哈希冲突的哈希表结构。

(3)画出用链表法解决哈希冲突的哈希表结构。

10-10冇n个结点的二叉排序树共冇多少种不同形态?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1