算法分析与设计考试复习题及参考答案jing

合集下载

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)

《算法设计与分析》考试题目及答案(DOC)D. 预排序与递归调用7. 回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先8. 分支限界法在问题的解空间树中,按(A)策略,从根结点出发搜索解空间树。

A.广度优先B. 活结点优先 C.扩展结点优先 D. 深度优先9. 程序块(A)是回溯法中遍历排列树的算法框架程序。

A.B.C.D. void backtrack (int t){if (t>n) output(x);elsefor (int i=t;i<=n;i++) {swap(x[t], x[i]);if (legal(t)) backtrack(t+1); swap(x[t], x[i]);}}void backtrack (int t){if (t>n) output(x);elsefor (int i=0;i<=1;i++) {x[t]=i;if (legal(t)) backtrack(t+1); }}10. 回溯法的效率不依赖于以下哪一个因素?(C )A.产生x[k]的时间;B.满足显约束的x[k]值的个数;C.问题的解空间的形式;D.计算上界函数bound的时间;E.满足约束函数和上界函数约束的所有x[k]的个数。

F.计算约束函数constraint的时间;11. 常见的两种分支限界法为(D)A. 广度优先分支限界法与深度优先分支限界法;B. 队列式(FIFO)分支限界法与堆栈式分支限界法;C. 排列树法与子集树法;D. 队列式(FIFO)分支限界法与优先队列式分支限界法;12. k带图灵机的空间复杂性S(n)是指(B)A.k带图灵机处理所有长度为n的输入时,在某条带上所使用过的最大方格数。

B.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的方格数的总和。

C.k带图灵机处理所有长度为n的输入时,在k条带上所使用过的平均方格数。

算法分析与设计考试复习题及参考答案

算法分析与设计考试复习题及参考答案
一、简要回答下列问题 : 1. 算法重要特性是什么? 2. 算法分析的目的是什么? 3. 算法的时间复杂性与问题的什么因素相关? 4. 算法的渐进时间复杂性的含义? 5. 最坏情况下的时间复杂性和平均时间复杂性有什么不同? 6. 简述二分检索(折半查找)算法的基本过程。 7. 背包问题的目标函数和贪心算法最优化量度相同吗? 8. 采用回溯法求解的问题,其解如何表示?有什么规定? 9. 回溯法的搜索特点是什么? 10. n皇后问题回溯算法的判别函数place的基本流程是什么? 11. 为什么用分治法设计的算法一般有递归调用? 12. 为什么要分析最坏情况下的算法时间复杂性? 13. 简述渐进时间复杂性上界的定义。 14. 二分检索算法最多的比较次数? 15. 快速排序算法最坏情况下需要多少次比较运算? 16. 贪心算法的基本思想? 17. 回溯法的解(x1,x2,……xn)的隐约束一般指什么? 18. 阐述归并排序的分治思路。 19. 快速排序的基本思想是什么。 20. 什么是直接递归和间接递归?消除递归一般要用到什么数据结 构? 21. 什么是哈密顿环问题? 22. 用回溯法求解哈密顿环,如何定义判定函数? 23. 请写出prim算法的基本思想。 二、复杂性分析 1、 MERGESORT(low,high) if low<high; then mid←(low,high)/2; MERGESORT(low,mid); MERGESORT(mid+1,high); MERGE(low,mid,high); endif end MERGESORT 2、 procedure S1(P,W,M,X,n) i←1; a←0
15..最坏情况下快速排序退化成冒泡排序,需要比较n2次。 16. 是一种依据最优化量度依次选择输入的分级处理方法。基本思 路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n 个输入排序,依次选择输入量加入部分解中。如果当前这个输入量的加 入,不满足约束条件,则不把此输入加到这部分解中。 17.回溯法的解(x1,x2,……xn)的隐约束一般指个元素之间应满 足的某种关系。 18. 将数组一分为二,分别对每个集合单独排序,然后将已排序的 两个序列归并成一个含n个元素的分好类的序列。如果分割后子问题还 很大,则继续分治,直到一个元素。 19.快速排序的基本思想是在待排序的N个记录中任意取一个记录, 把该记录放在最终位置后,数据序列被此记录分成两部分。所有关键字 比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并 把该记录排在这两部分的中间,这个过程称作一次快速排序。之后重复 上述过程,直到每一部分内只有一个记录为止。 20.在定义一个过程或者函数的时候又出现了调用本过程或者函数 的成分,既调用它自己本身,这称为直接递归。如果过程或者函数P调 用过程或者函数Q,Q又调用P,这个称为间接递归。消除递归一般要用 到栈这种数据结构。 21.哈密顿环是指一条沿着图G的N条边环行的路径,它的访问每个 节点一次并且返回它的开始位置。 22.当前选择的节点X[k]是从未到过的节点,即X[k]≠X[i](i=1,2, …,k-1),且C(X[k-1], X[k])≠∞,如果k=-1,则C(X[k], X[1]) ≠∞。 23. 思路是:最初生成树T为空,依次向内加入与树有最小邻接边 的n-1条边。处理过程:首先加入最小代价的一条边到T,根据各节点到 T的邻接边排序,选择最小边加入,新边加入后,修改由于新边所改变 的邻接边排序,再选择下一条边加入,直至加入n-1条边。 二、复杂性分析 1、 递归方程

算法分析与设计试卷及参考答案

算法分析与设计试卷及参考答案

算法分析与设计试卷及参考答案济南⼤学继续教育学院算法分析与设计试卷(A)学年:学期:年级:专业:学习形式:层次:(本试题满分100分,时间90分钟)⼀、单选题(每⼩题2分,共计20分。

)1. 下列情况不适合使⽤计数排序的是()。

A 要排序的数据表的数量很⼤B 要排序的数据表中有相同的关键字C 要排序的数据表基本有序D 要排序的数据表元素各不相同2. 集合{A,B}的幂集合为()。

A.{A},{B}B.{A},{B},ΦC. { {A},{B}} D {{A,B},{A},{B},Φ}3.下列字符串序列不符合字典排序的是()。

A. abc acb bca B. abc acb cbaC. bac bca abc D abc bac bca4.对于根树,出度为零的节点为()。

A0节点B根节点C叶节点D分⽀节点5.对完全⼆叉树⾃顶向下,从左向右给节点编号,节点编号为10的⽗节点编号为()。

A0B2C4D66.下列程序段的算法时间的复杂度为()。

for i ←0 to n dofor j ←0 to m do s //某种基本操作A O(n2)B O(m2)C (m+n)D O(m*n)7.三个盘⼦的汉诺塔,⾄少要执⾏移动操作的次数为 ( )。

A 1次B 3次C 6次D 7次8.与算法英⽂单词algorithm具有相同来源的单词是()。

A logarithmB algirosC arithmosD algebra9.从排序过程是否完全在内存中显⽰,排序问题可以分为()。

A稳定排序与不稳定排序B内排序与外排序C直接排序与间接排序D主排序与辅助排序10.下列()不是衡量算法的标准。

A时间效率B空间效率C问题难度D适应能⼒⼆、简答题(每题8分,共计24分。

)1.贪婪技术的基本思想是什么?它有哪些应⽤(给出2种)?2. 拓扑排序的基本思想是什么?它可⽤于哪些实际问题中(给出2种)?3.是么是算法,算法与程序有什么区别?三、算法设计题(每题14分,共计56分。

算法设计与分析复习题目及答案1

算法设计与分析复习题目及答案1

1一、选择题1、二分搜索算法是利用〔 A 〕实现的算法。

A、分治策略B、动态规划法C、贪心法D、回溯法2、以下不是动态规划算法根本步骤的是〔 A 〕。

A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是〔 A 〕的搜索方式。

A、分支界限法B、动态规划法C、贪心法D、回溯法4. 回溯法解旅行售货员问题时的解空间树是〔B 〕。

A、子集树B、排列树C、深度优先生成树D、广度优先生成树5.以下算法中通常以自底向上的方式求解最优解的是〔 B 〕。

A、备忘录法B、动态规划法C、贪心法D、回溯法6、衡量一个算法好坏的标准是〔C 〕。

A 运行速度快B 占用空间少C 时间复杂度低D 代码短7、以下不可以使用分治法求解的是〔D 〕。

A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题8. 实现循环赛日程表利用的算法是〔 A 〕。

A、分治策略B、动态规划法C、贪心法D、回溯法9.下面不是分支界限法搜索方式的是〔 D 〕。

1A、广度优先B、最小消耗优先C、最大效益优先D、深度优先10.以下算法中通常以深度优先方式系统搜索问题解的是〔 D 〕。

A、备忘录法B、动态规划法C、贪心法D、回溯法11.备忘录方法是那种算法的变形。

〔 B 〕A、分治法B、动态规划法C、贪心法D、回溯法12.哈弗曼编码的贪心算法所需的计算时间为〔 B 〕。

A、O〔n2n〕B、O〔nlogn〕C、O〔2n〕D、O〔n〕13.分支限界法解最大团问题时,活结点表的组织形式是〔 B 〕。

A、最小堆B、最大堆C、栈D、数组14.最长公共子序列算法利用的算法是〔 B 〕。

A、分支界限法B、动态规划法C、贪心法D、回溯法15.实现棋盘覆盖算法利用的算法是〔 A 〕。

A、分治法B、动态规划法C、贪心法D、回溯法〔 C 〕。

A、重叠子问题B、构造最优解C、贪心选择性质D、定义最优解17.回溯法的效率不依赖于以下哪些因素〔 D 〕A. 满足显约束的值的个数B. 计算约束函数的时间C. 计算限界函数的时间D. 确定解空间的时间〔 B 〕A.递归函数 B.剪枝函数 C.随机数函数 D.搜索函数19、下面关于NP问题说法正确的选项是〔B 〕A NP问题都是不可能解决的问题B P类问题包含在NP类问题中C NP完全问题是P类问题的子集D NP类问题包含在P类问题中20蒙特卡罗算法是〔 B 〕的一种。

《算法设计与分析》复习题参考答案

《算法设计与分析》复习题参考答案

《算法设计与分析》复习题参考答案一、概念题:请解释下列术语。

1.数据元素的集合。

2.队列是一个线性表,限制为只能在固定的一端进行插入,在固定的另一端进行删除。

3.对于算法a,如果存在一多项式p(),使得对a的每个大小为n的输入,a的计算时间为o(p(n)),则称a具有多项式复杂度4.二叉树的层数i与该层上的结点数n的关系为:n(i)=i2。

5.如果可满足性约化为一个问题L,则称该问题为NP-难度的。

6.算法就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

7.多数据单指令流8.若图的任意两个节点间均存在路径可达,则称该图为连通图。

9. 是指一个数学模型以及定义在该模型上的一组操作。

10.算法的复杂度只能用指数函数对其限界。

11.函数或过程直接或间接调用它自己。

12.和高度相同的满二叉树的每个对应的顶点编号相同的树13.由所有可行状态所构成的树。

14.如果L时NP难度的且L∈NP,则称问题L是NP-完全的。

15.算法是一个步骤的序列,满足:有穷性、可行性、确定性、输入、输出;过程不需要满足由穷性。

16.有向图的每条边有起点与终点之分,且用箭头指向边的终点。

无向图的边无起点和终点之分,边无箭头。

17.树(tree)是一个或多个结点的有限集合,,它使得:①有一个特别指定的称作根(root)的结点;②剩下的结点被分成m≥0个不相交的集合tl,…,tm,这些集合的每一个都是一棵树,并称t1,…,tm为这根的子树(subtree)。

18.P是所有可在多项式时间内用确定算法求解的判定问题的集合。

19.运算结果是唯一确定的算法20. nP是所有可在多项式时间内用不确定算法求解的判定问题的集合二、填空题1.n2.O ( n )3.最优化问题4.宽度优先搜索5.结点的最大级数6.互异7.内结点和外结点8.方形9.内部路径长度、外部路径长度10.一次11.归并分类算法12.贪心选择性质13.最优子结构14.二元归并15.最小成本生成树16.最优性17.最优决策18.可容许最大成本c19.最小成本三、程序填空题。

(完整版)算法设计与分析考试题及答案

(完整版)算法设计与分析考试题及答案

一、填空题(20分)1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_________,________,________,__________,__________。

2。

算法的复杂性有_____________和___________之分,衡量一个算法好坏的标准是______________________。

3。

某一问题可用动态规划算法求解的显著特征是____________________________________.4.若序列X={B,C,A,D,B,C,D},Y={A,C,B,A,B,D,C,D},请给出序列X和Y的一个最长公共子序列_____________________________.5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含___________。

6。

动态规划算法的基本思想是将待求解问题分解成若干____________,先求解___________,然后从这些____________的解得到原问题的解。

7。

以深度优先方式系统搜索问题解的算法称为_____________。

8.0-1背包问题的回溯算法所需的计算时间为_____________,用动态规划算法所需的计算时间为____________.9。

动态规划算法的两个基本要素是___________和___________。

10。

二分搜索算法是利用_______________实现的算法。

二、综合题(50分)1。

写出设计动态规划算法的主要步骤。

2.流水作业调度问题的johnson算法的思想。

3。

若n=4,在机器M1和M2上加工作业i所需的时间分别为a i和b i,且(a1,a2,a3,a4)=(4,5,12,10),(b1,b2,b3,b4)=(8,2,15,9)求4个作业的最优调度方案,并计算最优值。

4。

使用回溯法解0/1背包问题:n=3,C=9,V={6,10,3},W={3,4,4},其解空间有长度为3的0-1向量组成,要求用一棵完全二叉树表示其解空间(从根出发,左1右0),并画出其解空间树,计算其最优值及最优解。

算法分析与设计试题及答案

算法分析与设计试题及答案

算法分析与设计试题及答案一、选择题1. 下列哪个是属于分治算法的例子?A. 冒泡排序B. 归并排序C. 顺序查找D. 选择排序答案:B2. 在排序算法中,时间复杂度最优的是:A. 冒泡排序B. 插入排序C. 归并排序D. 快速排序答案:C3. 哪个不是动态规划的特点?A. 具有重叠子问题B. 通过递归求解C. 需要保存子问题的解D. 具有最优子结构答案:B4. 在图的广度优先搜索算法中,使用的数据结构是:A. 栈B. 队列C. 数组D. 堆栈答案:B5. 在最小生成树算法中,下列哪个不属于贪心策略?A. Kruskal算法B. Prim算法C. Dijkstra算法D. Prim-Kruskal混合算法答案:C二、简答题1. 请简述分治算法的思想和应用场景。

答案:分治算法的思想是将原问题分解成若干个规模较小且类似的子问题,然后解决子问题,最后将子问题的解合并得到原问题的解。

其应用场景包括排序算法(如归并排序、快速排序)、搜索算法(如二分查找)等。

2. 什么是动态规划算法?请给出一个动态规划算法的示例。

答案:动态规划算法是一种通过将问题分解成子问题并解决子问题来解决复杂问题的方法。

它的特点是具有重叠子问题和最优子结构性质。

以斐波那契数列为例,可以使用动态规划算法求解每一项的值,而不需要重复计算。

3. 图的深度优先搜索和广度优先搜索有什么区别?答案:图的深度优先搜索(Depth First Search,DFS)是一种先访问子节点再访问兄弟节点的遍历算法,通常使用递归或者栈实现。

而广度优先搜索(Breadth First Search,BFS)则是以层次遍历的方式展开搜索,使用队列来实现。

DFS更适合用于搜索路径,BFS则适用于寻找最短路径等。

4. 请简述贪心算法的特点及其应用场景。

答案:贪心算法的特点是每一步都采取当前状态下最优的选择,以期望得到全局最优解。

然而,贪心算法并不一定能求解所有问题的最优解,但对于一些特定问题,贪心算法往往能得到近似最优解。

算法分析与设计复习题答案

算法分析与设计复习题答案

1. 算法的定义及五大特性?算法(Algorithm ):对特定问题求解步骤的一种描述,是指令的有限序列。

算法的五大特性:⑴ 输入:一个算法有零个或多个输入。

⑵ 输出:一个算法有一个或多个输出。

⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

⑷ 确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出。

⑸ 可行性:算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

2. 最好最坏和平均情况。

给定算法排序用大O 记号。

如果问题规模相同,时间代价与输入数据有关,则需要分析最好情况、最坏情况、平均情况。

✓ 最好情况:出现概率较大时分析 ✓ 最差情况:实时系统✓ 平均情况:已知输入数据是如何分布的,通常假设等概率分布3. 画出对三个数进行排序的判定树,并分析时间性能。

2log n!=O(n 2log n),全排序叶子结点至少有n!个,n 个排序有n!多种情况,每个叶子对应一种排序结果。

4. 举例说明n 个NP 完全问题,解释一下,写出三种以上。

1.SAT 问题(Boolean Satisfiability Problem ) 2.最大团问题(Maximum Clique Problem ) 3.图着色问题(Graph Coloring Problem )4. 哈密顿回路问题(Hamiltonian Cycle Problem ) 5.TSP 问题(Traveling Salsman Problem ) 6.顶点覆盖问题(Vertex Cover Problem ) 7.最长路径问题(Longest Path Problem ) 8.子集和问题(Sum of Subset Problem )5. 给定模式计算next 值。

KMP T =“abaababc ” next 的值,前面重叠子串有多少。

j=1时,next[1]=0;j=2时,next[2]=1;j=3时,t1≠t2,next[3]=1; j=4时,t1=t3,next[4]=2;j=5时,t2≠t4, 令k=next[2]=1,t1=t4,next[5]=k+1=2;j=6时,t2=t5,next[6]=3;j=7时,t3=t6,next[7]=4; j=8时,t4≠t7,k=next[4]=2,t2=t7,next[8]=k+1=3。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、简答题:1. 算法重要特性是什么?确定性、可实现性、输入、输出、有穷性2. 算法分析的目的是什么?分析算法占用计算机资源的情况,对算法做出比较和评价,设计出额更好的算法。

3. 算法的时间复杂性与问题的什么因素相关?算法的时间复杂性与问题的规模相关,是问题大小n的函数。

4.算法的渐进时间复杂性的含义?当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此可以用T(n)的数量级(阶)评价算法。

时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。

5. 最坏情况下的时间复杂性和平均时间复杂性有什么不同?最坏情况下的时间复杂性和平均时间复杂性考察的是n固定时,不同输入实例下的算法所耗时间。

最坏情况下的时间复杂性取的输入实例中最大的时间复杂度:W(n) = max{ T(n,I) } , I∈Dn平均时间复杂性是所有输入实例的处理时间与各自概率的乘积和:A(n) =∑P(I)T(n,I) I∈Dn6. 简述二分检索(折半查找)算法的基本过程。

设输入是一个按非降次序排列的元素表A[i:j] 和x,选取A[(i+j)/2]与x比较,如果A[(i+j)/2]=x,则返回(i+j)/2,如果A[(i+j)/2]<x,则A[i:(i+j)/2-1]找x,否则在A[ (i+j)/2+1:j] 找x。

上述过程被反复递归调用。

回溯法的搜索特点是什么7. 背包问题的目标函数和贪心算法最优化量度相同吗?不相同。

目标函数:获得最大利润。

最优量度:最大利润/重量比。

8. 采用回溯法求解的问题,其解如何表示?有什么规定?问题的解可以表示为n元组:(x1,x2, (x)n),xi∈Si, Si为有穷集合,xi∈Si,(x1,x2, (x)n)具备完备性,即(x1,x2, (x)n)是合理的,则(x1,x2, (x)i)(i<n)一定合理。

9. 回溯法的搜索特点是什么?在解空间树上跳跃式地深度优先搜索,即用判定函数考察x[k]的取值,如果x[k]是合理的就搜索x[k]为根节点的子树,如果x[k]取完了所有的值,便回溯到x[k-1]。

10. n皇后问题回溯算法的判别函数place的基本流程是什么?将第K行的皇后分别与前k-1行的皇后比较,看是否与它们相容,如果不相容就返回false,测试完毕则返回true。

11 . 为什么用分治法设计的算法一般有递归调用?子问题的规模还很大时,必须继续使用分治法,反复分治,必然要用到递归。

12 为什么要分析最坏情况下的算法时间复杂性?最坏情况下的时间复杂性决定算法的优劣,并且最坏情况下的时间复杂性较平均时间复杂性游可操作性。

13 . 简述渐进时间复杂性上界的定义。

T(n)是某算法的时间复杂性函数,f(n)是一简单函数,存在正整数No和C,n〉No,有T(n)<f(n),这种关系记作T(n)=O(f(n))。

14 . 二分检索算法最多的比较次数?二分检索算法的最多的比较次数为 log n 。

15.. 快速排序算法最坏情况下需要多少次比较运算?最坏情况下快速排序退化成冒泡排序,需要比较n2次。

16. 贪心算法的基本思想?是一种依据最优化量度依次选择输入的分级处理方法。

基本思路是:首先根据题意,选取一种量度标准;然后按这种量度标准对这n个输入排序,依次选择输入量加入部分解中。

如果当前这个输入量的加入,不满足约束条件,则不把此输入加到这部分解中。

17.回溯法的解(x1,x2, (x)n)的隐约束一般指什么?回溯法的解(x1,x2, (x)n)的隐约束一般指个元素之间应满足的某种关系。

18.阐述归并排序的分治思路。

将数组一分为二,分别对每个集合单独排序,然后将已排序的两个序列归并成一个含n 个元素的分好类的序列。

如果分割后子问题还很大,则继续分治,直到一个元素。

19. 快速排序的基本思想是什么。

快速排序的基本思想是在待排序的N个记录中任意取一个记录,把该记录放在最终位置后,数据序列被此记录分成两部分。

所有关键字比该记录关键字小的放在前一部分,所有比它大的放置在后一部分,并把该记录排在这两部分的中间,这个过程称作一次快速排序。

之后重复上述过程,直到每一部分内只有一个记录为止。

20. 什么是直接递归和间接递归?消除递归一般要用到什么数据结构?在定义一个过程或者函数的时候又出现了调用本过程或者函数的成分,既调用它自己本身,这称为直接递归。

如果过程或者函数P调用过程或者函数Q,Q又调用P,这个称为间接递归。

消除递归一般要用到栈这种数据结构。

21. 什么是哈密顿环问题?哈密顿环是指一条沿着图G的N条边环行的路径,它的访问每个节点一次并且返回它的开始位置。

22. 用回溯法求解哈密顿环,如何定义判定函数?当前选择的节点X[k]是从未到过的节点,即X[k]≠X[i](i=1,2,…,k-1),且C(X[k-1], X[k])≠∞,如果k=-1,则C(X[k], X[1]) ≠∞。

23. 请写出prim算法的基本思想。

思路是:最初生成树T为空,依次向内加入与树有最小邻接边的n-1条边。

处理过程:首先加入最小代价的一条边到T,根据各节点到T的邻接边排序,选择最小边加入,新边加入后,修改由于新边所改变的邻接边排序,再选择下一条边加入,直至加入n-1条边。

二、复杂性分析1、MERGESORT(low,high)if low<high;then mid←(low,high)/2;MERGESORT(low,mid);MERGESORT(mid+1,high);MERGE(low,mid,high);endif end MERGESORT递归方程ncnankcnTcnnTcncnnTnTklog)1(22)4/(4)2/)4/(2(2)(+=+=+=++=设n=2k解递归方程:2、 procedure S1(P ,W ,M ,X ,n)i ←1; a ←0while i ≤ n doif W(i)>M then return endif a ←a+i i ←i+1 ; repeat endi ←1 ;s ←0 时间为:O(1)while i ≤ n do 循环n 次 循环体内所用时间为 O(1) 所以 总时间为:T(n)=O(1)+ nO(1)= O(n)3、procedure PARTITION(m,p)Integer m,p,i;global A(m:p-1) v ←A(m);i ←mlooploop i ←i+1 until A(i) ≥v repeatloop p ←p-1 until A(p) ≤v repeatif i<pthen call INTERCHANGE(A(i),A(p)) else exit endifrepeatA(m) ←A(p);A(p) ←v End PARTITION最多的查找次数是p-m+1次4、procedure F1(n)if n<2 then return(1) else return(F2(2,n,1,1)) endifend F1procedure F2(i,n,x,y) if i ≤n⎩⎨⎧>+==1)2/(21)(n cn n T n a n Tthen call F2(i+1,n,y,x+y)endifreturn(y)end F2F2(2,n,1,1)的时间复杂度为:T(n)=O(n-2); 因为i≤n时要递归调用F2,一共是n-2次当n=1时F1(n)的时间为 O(1)当n>1时F1(n)的时间复杂度与F2(2,n,1,1)的时间复杂度相同即为为 O(n) 5、procedure MAX(A,n,j)xmax←A(1);j←1for i←2 to n doif A(i)>xmax then xmax←A(i); j←i;endifrepeatend MAXxmax←A(1);j←1 时间为:O(1)for i←2 to n do 循环最多n-1次所以总时间为:T(n)=O(1)+ (n-1)O(1)= O(n)6、procedure BINSRCH(A,n,x,j)integer low,high,mid,j,n;low←1;high←nwhile low≤high domid←|_(low+high)/2_|case:x<A(mid):high←mid-1:x>A(mid):low←mid+1:else:j←mid; returnendcaserepeatj←0end BINSRCHlog2n+1三、算法理解1、写出多段图最短路经动态规划算法求解下列实例的过程,并求出最优值。

各边的代价如下:C(1,2)=3, C(1,3)=5 ,C(1,4)=2C(2,6)=8 ,C(2,7)=4 ,C(3,5)=5 ,C(3,6)=4, C(4,5)=2,C(4,6)=1 C(5,8)=4, C(6,8)=5 ,C(7,8)=6Cost(4,8)=0Cost(3,7)= C(7,8)+0=6 ,D[5]=8 Cost(3,6)= C(6,8)+0=5, D[6]=8 Cost(3,5)= C(5,8)+0=4 D[7]=8Cost(2,4)= min{C(4,6)+ Cost(3,6), C(4,5)+ Cost(3,5)} = min{1+ 5, 2+4}=6 D[4]=6 Cost(2,3)= min{C(3,6)+ Cost(3,6) } = min{4+5}=9 D[3]=5Cost(2,2)= min{C(2,6)+ Cost(3,6), C(2,7)+ Cost(3,7)} = min{8+5, 4+6}=10 D[2]=7Cost(1,1)= min{C(1,2)+ Cost(2,2), C(1,3)+ Cost(2,3), C(1,4)+ Cost(2,4)} = min{3+10, 5+9,2+6}= 8D[1]=41→4→6→82、 写出maxmin 算法对下列实例中找最大数和最小数的过程。

数组 A=(48,12,61,3,5,19,32,7) 写出maxmin 算法对下列实例中找最大数和最小数的过程。

数组 A=()1、 48,12,61,3, 5,19,32,72、48,12 61,3 5,19 32,73、 48~61, 12~3 19~32,5~74、 61~32 3~55、 619.给出5个数(3,6,9,1,7),M=13,用递归树描述sumofsub 算法求和数=M 的一个子集的过程。

1、快速排序算法对下列实例排序,算法执行过程中,写出数组A第一次被分割的过程。

A=(65,70,75,80,85,55,50,2)(1) (2) (3) (4) (5) (6) (7) (8) i p65 70 75 80 85 55 50 2 2 865 2 75 80 85 55 50 70 3 765 2 50 80 85 55 75 70 4 665 2 50 55 85 80 75 70 4 655 70 75 80 85 65 50 22、归并排序算法对下列实例排序,写出算法执行过程。

相关文档
最新文档