算法分析与设计期末考试试卷A卷文档格式.docx
- 文档编号:14345891
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:8
- 大小:126.06KB
算法分析与设计期末考试试卷A卷文档格式.docx
《算法分析与设计期末考试试卷A卷文档格式.docx》由会员分享,可在线阅读,更多相关《算法分析与设计期末考试试卷A卷文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
(9),(10),减可变规模。
9.堆的构建过程对于堆排序而言是一种(11)策略,属于变治思想中的实例化简类型。
10.分支限界法主要有(12)分支限界法和(13)分支限界法。
11.快速排序算法是基于(14)的一种排序算法。
12.动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解(15),然后从这些子问题的解得到原问题的解。
二、选择题(每题2分,共20分)
1、二分搜索算法是利用(
)实现的算法。
A、分治策略
B、动态规划法
C、贪心法
D、回溯法
2.衡量一个算法好坏的标准是()。
A、运行速度快B、占用空间少C、时间复杂度低D、代码短
3.以下关于渐进记号的性质是正确的有:
()
A.fn=Θgn,gn=Θhn⟹fn=Θhn
B.fn=Ogn,gn=Ohn⟹hn=Ofn
C.Ofn+O(gn)=O(minfn,gn)
D.fn=Ogn⟺gn=O(fn)
4.下面不是分支界限法搜索方式的是(
)。
A、广度优先 B、最小耗费优先
C、最大效益优先 D、深度优先
5.记号的定义正确的是()。
A、O(g(n))={f(n)|存在正常数c和n0使得对所有nn0有:
0f(n)cg(n)};
B、O(g(n))={f(n)|存在正常数c和n0使得对所有nn0有:
0cg(n)f(n)};
C、(g(n))={f(n)|对于任何正常数c>
0,存在正数和n0>
0使得对所有nn0有:
0f(n)<
cg(n)};
D、(g(n))={f(n)|对于任何正常数c>
0cg(n)<
f(n)};
6.以深度优先方式系统搜索问题解的算法称为()。
A、分支界限算法B、概率算法
C、贪心算法
D、回溯算法
7.矩阵连乘问题的算法可由()设计实现。
A、分支界限算法
B、动态规划算法
8.采用贪心算法的最优装载问题的主要计算量在于将集装箱依其重量从小到大排序,故算法的时间复杂度为()。
A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)
9.合并排序算法是利用()实现的算法。
D、回溯法
10.优先队列式分支限界法选取扩展结点的原则是()。
A、先进先出 B、后进先出 C、结点的优先级 D、随机
三、算法及程序分析(共25分)。
1、阅读下面的程序,按要求回答问题:
(共15分)
typedefstructSqList{
int*r;
intLength;
}SqList;
voidQuickSort(SqList*L)
{
QSort(L,1,L->
Length);
return;
}
voidQSort(SqList*L,intlow,inthigh)
intpivotloc;
if(low<
high){
pivotloc=Partion(L,low,high);
QSort(L,low,pivotloc-1);
QSort(L,pivotloc+1,high);
intPartion(SqList*L,intlow,inthigh)
intpivotkey;
L->
r[0]=L->
r[low];
pivotkey=L->
while(low<
high){
high&
&
L->
r[high]>
=pivotkey)
--high;
r[low]=L->
r[high];
r[low]<
++low;
r[high]=L->
}
r[0];
returnlow;
(1)请问上述程序采用什么算法?
(2分)
(2)设L->
Length的值为n,请求QuickSort(SqList*L)函数的时间复杂度,写出求解过程。
(8分)
(3)设传递到Partion(SqList*L,intlow,inthigh)函数的参数如下:
(5分)
Length:
8;
r:
{12,25,15,20,35,48,23,76,18}
Low:
1
High:
7
请写出该函数执行结束之后L->
r的值以及函数返回的值。
2、阅读下面的程序,按要求回答问题。
(共10分)
typedefstructArcNode{
intadjvex;
floatweight;
structArcNode*nextarc;
}ArcNode;
typedefstructVNode{
intvisited;
chardata[20];
ArcNode*firstarc;
}VNode,*AdjList;
typedefstructALGraph{
intvexnum,arcnum;
VNode*vertices;
}ALGraph,*Graph;
GraphPrimTree(GraphG)
GraphCTree;
inti,Maxpos,pos=0;
CTree=(Graph)malloc(sizeof(ALGraph));
CTree->
vexnum=0;
CTree->
vertices=(AdjList)malloc(sizeof(VNode)*(G->
vexnum+1));
for(i=0;
i<
G->
vexnum;
i++)
G->
vertices[i].visited=0;
Maxpos=InsertStr(G->
vertices[pos].data,CTree);
for(i=0;
=Maxpos;
i++){
Maxpos=FindPrimWeight(G,CTree,i);
if(Maxpos>
vexnum)
break;
}
returnCTree;
intFindPrimWeight(GraphG,GraphCTree,intMaxpos)
floatMinw;
ArcNode*p,*q=NULL;
intrpos,pos,curpos,i,cpos;
char*s;
curpos=Maxpos;
Minw=(float)3.4E38;
pos=InsertStr(CTree->
vertices[i].data,G);
p=G->
vertices[pos].firstarc;
G->
vertices[pos].visited=1;
if(p!
=NULL){
while(p!
if(G->
vertices[p->
adjvex].visited==0&
Minw>
p->
weight){
Minw=p->
weight;
q=p;
cpos=i;
}
p=p->
nextarc;
}
}
if(q!
G->
vertices[q->
adjvex].visited=1;
s=G->
adjvex].data;
rpos=InsertStr(s,CTree);
G->
arcnum++;
InsNode(cpos,rpos,CTree,q->
weight);
curpos=curpos>
rpos?
curpos:
rpos;
returncurpos;
intInsertStr(char*stemp,GraphG)
inti;
char*ctemp;
ctemp=G->
vertices[0].data;
for(i=0;
ctemp=G->
vertices[i].data;
if(strcmp(stemp,ctemp)==0)
break;
if(i==G->
vexnum){
vertices=(AdjList)realloc(G->
vertices,
sizeof(VNode)*(G->
ctemp=G->
strcpy(ctemp,stemp);
G->
vertices[i].firstarc=NULL;
vexnum++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 期末考试 试卷
![提示](https://static.bdocx.com/images/bang_tan.gif)