算法复习题汇总

合集下载

复习题2(算法部份)

复习题2(算法部份)
C.一个算法可以有多个开始处,也可以有多个结束处
D.一个算法不能有多个开始处,也不能有多个结束处
答案:B
14.算法中通常需要三种不同的执行流程,即:_____。
A.连续模式、分支模式和循环模式
B.顺序模式、结构模式和循环模式
C.结构模式、分支模式和循环模式
D.顺序模式、分支模式和循环模式
答案:D
15.算法中通常需要三种不同的执行流程,下面说法正确的是:_____。
答案:B
2.计算机是一种按照设计好的程序,快速、自动地进行计算的电子设备,计算机开始计算之前,必须把解决某个问题的程序存贮在计算机的_____中。
A.硬盘B.软盘C.内存D.CPU
答案:C
3.计算机程序由以下两部分即:_____组成。
A.执行部分和数据部分
B.数据部分和程序部分
C.指令部分和数据部分
第1章计算机和算法
1.使用计算机解题的步骤,以下描述正确的是:_____。
A.正确理解题意→设计正确算法→寻找解题方法→编写程序→调试运行
B.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行
C.正确理解题意→寻找解题方法→设计正确算法→调试运行→编写程序
D.正确理解题意→寻找解题方法→设计正确算法→编写程序→调试运行
答案:B
10.关于算法的确定性特征,以下不符合算法确定性的是:_____。
A.D←(B * B–4 * A * C)
B.S←(L * H) / 10
C.输入:X
D.输出:L /正整数
答案:D
11.可以用多种不同的方法来描述一个算法,算法的描述可以用:_____。
A.流程图、分支和循环
B.顺序、流程图和自然语言

计算机算法与设计复习题(含答案)

计算机算法与设计复习题(含答案)

1、一个算法的优劣可以用(时间复杂度)与(空间复杂度)与来衡量。

2、回溯法在问题的解空间中,按(深度优先方式)从根结点出发搜索解空间树。

3、直接或间接地调用自身的算法称为(递归算法)。

4、 记号在算法复杂性的表示法中表示(渐进确界或紧致界)。

5、在分治法中,使子问题规模大致相等的做法是出自一种(平衡(banlancing)子问题)的思想。

6、动态规划算法适用于解(具有某种最优性质)问题。

7、贪心算法做出的选择只是(在某种意义上的局部)最优选择。

8、最优子结构性质的含义是(问题的最优解包含其子问题的最优解)。

9、回溯法按(深度优先)策略从根结点出发搜索解空间树。

10、拉斯维加斯算法找到的解一定是(正确解)。

11、按照符号O的定义O(f)+O(g)等于O(max{f(n),g(n)})。

12、二分搜索技术是运用(分治)策略的典型例子。

13、动态规划算法中,通常不同子问题的个数随问题规模呈(多项式)级增长。

14、(最优子结构性质)和(子问题重叠性质)是采用动态规划算法的两个基本要素。

15、(最优子结构性质)和(贪心选择性质)是贪心算法的基本要素。

16、(选择能产生最优解的贪心准则)是设计贪心算法的核心问题。

17、分支限界法常以(广度优先)或(以最小耗费(最大效益)优先)的方式搜索问题的解空间树。

18、贪心选择性质是指所求问题的整体最优解可以通过一系列(局部最优)的选择,即贪心选择达到。

19、按照活结点表的组织方式的不同,分支限界法包括(队列式(FIFO)分支限界法)和(优先队列式分支限界法)两种形式。

20、如果对于同一实例,蒙特卡洛算法不会给出两个不同的正确解答,则称该蒙特卡洛算法是(一致的)。

21、哈夫曼编码可利用(贪心法)算法实现。

22概率算法有数值概率算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法23以自顶向下的方式求解最优解的有(贪心算法)24、下列算法中通常以自顶向下的方式求解最优解的是(C)。

算法复习题

算法复习题

算法复习试题一、名词解释:1、算法:就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。

2、贪心算法:能够得到某种量度意义下的最优解的分级处理方法称为贪心算法。

3、分治法:分治法的求解思想就是把整个问题分成若干个小问题后分的治之4、递归过程:一个递归过程的执行类似于多个子程序的嵌套调用,递归过程是自己调用自己本身代码。

递归算法的特点:思路清晰,算法的描述简洁且易理解。

5、集合:在研究某一类对象时,可把这类对象的整体称为集合。

6、生成树:设G=(V,E)是一个无向连通图。

如果G的生成子图T=(V,E')是一棵树,则称T是G的一棵生成树。

7、算法具有以下5个属性:有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。

确定性:算法中每一条指令必须有确切的含义。

不存在二义性。

只有一个入口和一个出口可行性:就是算法描述的操作是可以通过已经实现的基本运算执行有限次来实现的。

输入:一个算法有零个或多个输入,这些输入取自于某个特定对象的集合。

输出:一个算法有一个或多个输出,这些输出同输入有着某些特定关系的量。

8、迭代法:称辗转法,是一种不断用变量的旧值递推出新值的解决问题的方法。

9、贪婪法: 是一种不追求最优解,只希望得到较为满意解的方法。

贪婪法不要回溯10、动态规划:是一种将问题实例分解为更小的、相似的子问题,并存储子问题的解而避免计算重复的子问题,以解决最优化问题的算法策略。

11、分支限界法:是一种用于求解组合优化问题的排除非解的搜索算法。

12、树:树是一个或多个结点的有限集合。

12、二元树:它是结点的有限集合,它或者为空,或者由一个根和两棵树(左子树和右子树)的不相交的二元树所组成。

13、二分检索树:T是一棵二元树,它或者为空,或者其每个结点含有一个可比较大小的数据元素。

14、图:图是数据结构,一个图G是由称之为结点V和边E的两个集合组成的15、最优解:使目标函数取极值(极大值或极小值)的可行解。

算法期末考试题及答案

算法期末考试题及答案

算法期末考试题及答案一、选择题(每题2分,共20分)1. 以下哪个算法不是排序算法?A. 快速排序B. 归并排序C. 深度优先搜索D. 堆排序答案:C2. 在二叉树的遍历算法中,中序遍历的顺序是:A. 先序B. 后序C. 中序D. 层序答案:C3. 动态规划与分治法算法的主要区别在于:A. 问题分解的方式B. 问题解决的顺序C. 存储中间结果的方式D. 问题规模的大小答案:C4. 哈希表的冲突解决方法不包括:A. 开放寻址法B. 链地址法C. 线性探测法D. 排序答案:D5. 以下哪个是图的遍历算法?A. 归并排序B. 深度优先搜索C. 快速排序D. 堆排序答案:B6. 贪心算法的特点是:A. 每一步都选择最优解B. 每一步都选择局部最优解C. 每一步都选择最差解D. 每一步都随机选择解答案:B7. 在算法分析中,时间复杂度O(1)表示:A. 常数时间B. 线性时间C. 对数时间D. 多项式时间答案:A8. 以下哪个是排序算法的时间复杂度为O(n^2)?A. 快速排序B. 归并排序C. 冒泡排序D. 堆排序答案:C9. 递归算法的基本原理是:A. 重复执行B. 分而治之C. 循环调用D. 迭代求解答案:B10. 以下哪个是算法的时间复杂度为O(log n)的典型例子?A. 二分查找B. 线性查找C. 冒泡排序D. 快速排序答案:A二、简答题(每题10分,共20分)1. 简述快速排序算法的基本思想及其时间复杂度。

答案:快速排序是一种分治法的排序算法。

其基本思想是选择一个元素作为“基准”(pivot),然后将数组分为两部分,一部分包含所有小于基准的元素,另一部分包含所有大于基准的元素。

这个过程称为分区(partitioning)。

之后,递归地对这两部分进行快速排序。

快速排序的平均时间复杂度为O(n log n),但在最坏情况下(例如数组已经排序或所有元素相等)时间复杂度为O(n^2)。

2. 解释什么是动态规划,并给出一个动态规划问题的例子。

算法期末复习题2

算法期末复习题2

填空题:1.一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:确定性有穷性可行性 0个或多个输入一个或多个输出2.算法的复杂性有时间复杂性和空间复杂性之分,衡量一个算法好坏的标准是时间复杂度高低。

3.某一问题可用动态规划算法求解的显著特征是该问题具有最优子结构性质。

5.用回溯法解问题时,应明确定义问题的解空间,问题的解空间至少应包含一个(最优)解6.动态规划算法的基本思想是将待求解问题分解成若干子问题_,先求解子问题,然后从这些子问题的解得到原问题的解。

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

8.0-1背包问题的回溯算法所需的计算时间为o(n*2n),用动态规划算法所需的计算时间为o(min{nc,2n})。

9.动态规划算法的两个基本要素是最优子结构和重叠子问题。

10.二分搜索算法是利用动态规划法实现的算法。

11.一个算法复杂性的高低体现在计算机运行该算法所需的时间和存储器资源上,因此算法的复杂性有时间复杂性和空间复杂性之分。

12.出自于“平衡子问题”的思想,通常分治法在分割原问题,形成若干子问题时,这些子问题的规模都大致相同。

13.动态规划算法有一个变形方法备忘录方法。

这种方法不同于动态规划算法“自底向上”的填充方向,而是“自顶向下”的递归方向,为每个解过的子问题建立了备忘录以备需要时查看,同样也可避免相同子问题的重复求解。

14、这种不断回头寻找目标的方法称为回溯法。

15、直接或间接地调用自身的算法称为递归算法。

16、 记号在算法复杂性的表示法中表示渐进确界或紧致界。

17、由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。

18、建立计算模型的目的是为了使问题的计算复杂性分析有一个共同的客观尺度。

19、下列各步骤的先后顺序是②③④①。

①调试程序②分析问题③设计算法④编写程序。

20、最优子结构性质的含义是问题的最优解包含其子问题的最优解。

算法复习题

算法复习题

一、选择题1、衡量一个算法好坏的标准是( )。

(A )运行速度快 (B )占用空间少 (C )时间复杂度低 (D )代码短2、函数n n 1032 的渐进表达式是( )。

(A )O (23n ) (B)O (3) (C )O (n 10) (D )O(2n )3、以下不可以使用分治法求解的是( )。

(A )棋盘覆盖问题 (B )选择问题 (C )归并排序 (D) 0/1背包问题4、二分搜索算法是利用( )实现的算法。

(A)分治策略 (B )动态规划法 (C)贪心法 (D )回溯法5、二分搜索算法的时间复杂性为( )。

(A )O(2n ) (B )O (n ) (C )O (n log ) (D)O (n n log )6、快速排序算法的时间复杂性为( )。

(A )O (2n ) (B)O (n ) (C )O(n log ) (D)O(n n log )7、实现大整数的乘法是利用( )的算法.(A )分治策略 (B)动态规划法 (C)贪心法 (D )回溯法8、矩阵连乘问题的算法可由( )设计实现。

(A )分支界限算法 (B)动态规划算法 (C)贪心算法 (D )回溯算法9、实现循环赛日程表利用的算法是( )。

(A )分治策略 (B )动态规划法 (C )贪心法(D )回溯法10、下列是动态规划算法基本要素的是( ).(A )定义最优解 (B )构造最优解 (C )算出最优解 (D )子问题重叠性质11、最长公共子序列算法利用的算法是( )。

(A )分治法 (B )动态规划法 (C )贪心法 (D)回溯法12、下列算法中通常以自底向上的方式求解最优解的是( )。

(A)备忘录法 (B )动态规划法 (C )贪心法 (D )回溯法13、以下不可以使用分治法求解的是( ).(A)棋盘覆盖问题 (B )选择问题 (C )归并排序 (D )0/1背包问题14、下列算法中不能解决0/1背包问题的是( )(A)贪心法 (B )动态规划 (C)回溯法 (D)分支限界法15、算法是由若干条指令组成的有穷序列,而且满足以下性质( )(A )输入:有0个或多个输入 (B)输出:至少有一个输出(C )确定性:指令清晰,无歧义 (D)有限性:指令执行次数有限,而且执行时间有限A (1)(2)(3)B (1)(2)(4)C (1)(3)(4)D (1) (2)(3)(4)16、函数32n +10nlog n 的渐进表达式是( ).A. 2n B 。

算法分析复习题

算法分析复习题

算法分析复习题⼀、单项选择题:1、算法的五⼤特征是确定性、有穷性、输⼊、输出和可⾏性。

其输⼊⾄少是( A )个。

A、0B、1C、n D、-12、⼤整数的乘法是利⽤的算法( C )。

A、贪⼼法B、动态规划法C、分治策略D、回溯法3、采⽤贪⼼算法的最优装载问题的主要计算量在于将集装箱依其重量从⼩到⼤排序,故算法的时间复杂度为( B )。

A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)4、⼀个问题可⽤动态规划算法或贪⼼算法求解的关键特征是问题的( B )。

A、重叠⼦问题B、最优⼦结构性质C、贪⼼选择性质D、定义最优解5、设⼀个算法的输⼊规模为n,Dn是所有输⼊的集合,任⼀输⼊I∈Dn,P(I)是I出现的概率,有=1,T(I)是算法在输⼊I下所执⾏的基本语句次数,则该算法的平均执⾏时间为(D)。

A、B、C、D、6、把递归算法转化为⾮递归算法有如下两种基本⽅法:(1)直接⽤循环结构的算法替代递归算法。

(2)⽤( A )模拟系统的运⾏过程,通过分析只保存必须保存的信息,从⽽⽤⾮递归算法替代递归算法。

A、栈B、队列C、顺序表D、链表7、算法分析中,记号表⽰(A)。

A、渐进下界B、渐进上界C、⾮紧上界D、紧渐进界9、贪⼼算法与动态规划算法的主要区别是(B )。

A、最优⼦结构B、贪⼼选择性质C、构造最优解D、定义最优解10、回溯法在问题的解空间树中,按(D)策略,从根结点出发搜索解空间树。

A、⼴度优先B、活结点优先C、扩展结点优先D、深度优先11. 回溯法的问题的解空间树是(B),并不需要在算法运⾏时构造⼀棵真正的树结构,然后再在该解空间树中搜索问题的解,⽽是只存储从根结点到当前结点的路径。

A、顺序⽅式的⼆叉树B、虚拟的树C、满⼆叉树D、完全⼆叉树12. 应⽤回溯法求解问题时,⾸先应该明确问题的解空间。

解空间中满⾜约束条件的决策序列称为(C)。

A、最优解B、局部最优解C、可⾏解D、最优⼦序列解13. ⼀个问题的最优解包含其⼦问题的最优解,则称此问题具有(D)性质。

算法复习题(精炼版)

算法复习题(精炼版)

填空题动态规划算法的基本要素为:最优子结构性质与重叠子问题性质1)算法分析中,记号O表示渐进上界,记号Ω表示渐进下界,记号Θ表示紧渐进界。

2)回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。

3)分支限界法在问题的解空间树中,按广度优先策略,从根结点出发搜索解空间树。

所谓贪心选择性质是指(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到)。

所谓最优子结构性质是指(问题的最优解包含了其子问题的最优解)。

回溯法是指(具有限界函数的深度优先生成法)。

回溯法的算法框架按照问题的解空间一般分为(子集树)算法框架与(排列树)算法框架。

4)二分搜索算法是利用分治策略实现的算法。

5)衡量一个算法好坏的标准是时间复杂度低6)最长公共子序列算法利用的算法是动态规划法7)Strassen矩阵乘法是利用分治策略实现的算法8)回溯法搜索状态空间树是按照深度优先遍历的顺序。

9)算法中通常以自底向下的方式求解最优解的是动态规划法10)背包问题的贪心算法所需的计算时间为O(nlogn)11)0-1背包问题的回溯算法所需的计算时间为O(n2n)12)用动态规划算法解决最大字段和问题,其时间复杂性为n13)一个算法就是一个有穷规则的集合,其中之规则规定了解决某一特殊类型问题的一系列运算,此外,算法还应具有以下五个重要特性:_有穷性,确定性,可行性,输入,输出。

1.算法的复杂性有时间复杂性和空间复杂性之分。

2、程序是算法用某种程序设计语言的具体实现。

3、算法的“确定性”指的是组成算法的每条指令是清晰的,无歧义的。

4.矩阵连乘问题的算法可由动态规划设计实现。

6、算法是指解决问题的一种方法或一个过程。

7、从分治法的一般设计模式可以看出,用它设计出的程序一般是递归算法。

8、问题的最优子结构性质是该问题可用动态规划算法或贪心算法求解的关键特征。

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

10、数值概率算法常用于数值问题的求解。

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

1.什么是算法?算法必须满足的五个特性是什么?算法:一组有穷的规则,规定了解决某一特定类型问题的一系列运算。

(有限指令的集合,遵循它可以完成一个特定的任务).必须满足的五个特性是(遵循以下五条准则):1.有穷(限)性2.确定性3.可(能)行性4.输入(n≥0)5.输出(n≥1)2.对算法进行分析分哪两个阶段?各自完成什么任务(分别得到什么结果)?对一个算法要作出全面的分析可分成两个阶段进行,即:事前分析和事后测试。

事前分析求出该算法的一个时间界限函数;事后测试搜集此算法的执行时间和实际占用空间的统计资料。

3.证明:若f1(n)=O(g1(n))并且f2(n)= O(g2(n)),那么f1(n) +f2(n)=O(max{g1(n), g2(n)}证明:根据f1(n)=O(g1(n))可知,存在正常数C1,当n≥n0时,使得|f1(n)|≤C1|g1(n)|;同理,根据f2(n)= O(g2(n))可知,存在正常数C2,当n≥n0时,使得|f2(n)|≤C2|g2(n)|当n≥n0时,|f1(n)+f2(n)|≤|f1(n)|+|f2(n)|≤C1|g1(n)|+C2|g2(n)|≤C1|g k(n)|+C2|g k(n)|≤(C1+C2)|g k(n)|,其中g k(n)=max{g1(n),g2(n)},k={1,2}当n≥n0时,取C=(C1+C2),据定义命题得证。

4.如果f1(n)= Θ(g1(n))并且f2(n)= Θ(g2(n)),下列说法是否正确?试说明之。

(a) f1(n) +f2(n)= Θ(g1(n)+ g2(n))(b) f1(n) +f2(n)= Θ(min{g1(n), g2(n)})(c) f1(n) +f2(n)= Θ(max{g1(n), g2(n)})答:(a)和(c)均正确,(b)错误。

(a)正确可以根据定义直接证得。

(b)错误可举反例。

例:f1(n)= 2n,f2(n)=2 n2下面证明(c)正确性.根据上题已经证明f1(n)+f2(n)= O(max{g1(n),g2(n)}),下面只需证明f 1(n)+f2(n)= Ω(max{g1(n), g2(n)}),即存在正常数C,使得|f1(n)+f2(n)|≥C(max{g1(n), g2(n)})根据f1(n)= Θ(g1(n))并且f2(n)= Θ(g2(n)) 得到,当n≥n0时,存在正常数C1、C2、C3、C4C 1|g1(n)|≤|f1(n)|≤C3|g1(n)|C2|g2(n)|≤|f2(n)|≤C4|g2(n)|不妨设max{g1(n), g2(n)}= g1(n)由于|f1(n)+f2(n)|≥||f1(n)|-|f2(n)||≥|C1|g1(n)|-C3|g2(n)||=C|max{g1(n), g2(n)}|取C≥|C1-C3|的正常数,由定义得f 1(n)+f2(n) = Ω(max{g1(n), g2(n)})命题得证。

5.证明 |「log2n」|= O(n) 证明:对于任意的正整数n,|「log2n」|≤|log2(n+1)|≤|n+1|≤2|n|取n0=1,C=2,根据定义知命题成立。

6.证明 3n「log2n」= O(n2)证明:对于任意的正整数n,|3n「log2n」|≤|3n「log2n」|≤3|n2| 取n0=1,C=3,根据定义知命题成立。

7.用数学归纳法证明:当n≥1时,∑=+ =ninni12/)1(.证明:当n=1时,∑==nii11,n(n+1)/2=1,命题成立;假设n=k-1时,∑=+ =ninni12/)1(成立;(k≥2)当n=k时,∑=+ =ninni12/)1(=kkkini+-=∑=12/)1(=k(k+1)/2综上可知,命题成立。

8.在下列情况下求解递归关系式T(n)=()2(/2)()g nT n f n⎧⎨+⎩否则足够小n当①n=2k g(n)= O(1)和f(n)= O(n);②n=2k g(n)= O(1)和f(n)= O(1)。

解: T(n)=T(2k)=2 T(2k-1)+f(2k)=2(2 T(2k-2)+f(2k-1)) +f(2k)=22T(2k-2)+21 f(2k-1)+ f(2k)=……=2k T(1)+2k-1f(2)+2k-2f(22)+…+20f(2k ) =2k g(n)+ 2k-1f(2)+2k-2f(22)+…+20f(2k ) ①当g(n)= O (1)和f(n)= O (n)时,不妨设g(n)=a ,f(n)=bn ,a ,b 为正常数。

则T(n)=T(2k )= 2k a+ 2k-1*2b+2k-2*22b+…+20*2k b =2k a+kb2k=an+bnlog 2n= O (nlog 2n) ②当g(n)= O (1)和f(n)= O (1)时,不妨设g(n)=c ,f(n)=d ,c ,d 为正常数。

则 T(n)=T(2k )=c2k + 2k-1d+2k-2d+…+20d=c2k +d(2k -1)=(c+d)n-d= O (n)9.求解递推关系式:解:构造生成函数∑∞==++=12)()2()1()(k k x k h x h x h x H求解)(x H+--=-++=322)2(2)1(2)(2)2()1()(x h x h x xH x h x h x Hxxx x x x H x -=+++=-1)()21(32 )1(<x )1)(21()(x x xx H --=分解)(x H 成幂级数 令xBx A x H 211)(-+-=则A=-1 B=1))2()2(21()1(21111)(322 ++++++++-=-+--=∴x x x x x xx x H1)1(2)(1)1(+-==n h n h h∑∞=-=+-++-+-=122)12()12()12()12(k kk n n x x x x所以12)(-=∴n n h10.求解递推关系式:⎩⎨⎧+==-22111n nT T T解:22*3)22(22222)2(222111122221-=+++=++=++=+=------n n n n n n n T T T T T11.求解递推关系式:⎪⎩⎪⎨⎧>+===--)2(112121n F F F F F n n n解:以n F 为系数,构成生成函数)(x F++=-++=++=423123221221)()()(x F x F x F x x F x F x xF x F x F x F251251)251)(251(1)()()()(1(231232121)2+++-+=++-+-=--==+--+-+=--x B x A x x x x x xx F x x F F F x F F x F x F x x )511(21+-=A )511(21--=B +-+-=222)()((51)(x x x F βαβα其中251+=α 251-=βnn n n n n F F )251(51)(51+≈-=∞→βα12.分治法的三个步骤是什么?给出使用SPARKS 语言描述的分治策略抽象化控制。

答:分治法的三个步骤是: ① 分解 ②解决 ③合并 用SPARKS 语言描述的分治策略抽象化控制为:Procedure DANDC(p,q)Global n,A(1:n);integer m,p,q; If SMALL(p,q)Then return(G(p,q)) Else m ←DIVIDE(p,q)Return(COMBINE(DANDC(p,m), DANDC(m+1,q)))Endif End DANDC13.根据教材中所给出的二分检索策略,写一个二分检索的递归过程。

Procedure BINSRCH(A, low, high, x, j) integer mid if low ≤high then mid ←⎣⎦2/)(high low +if x=A(mid) then j ←mid; endifif x>A(mid) then BINSRCH(A, mid+1, high, x, j); endif if x<A(mid) then BINSRCH(A, low, mid-1, x, j); endifelse j ←0; endif end BINSRCH14.作一个“三分”检索算法。

它首先检查n/3处的元素是否等于某个x 的值,然后检查2n/3处的元素;这样,或者找到x ,或者把集合缩小到原来的1/3。

分析此算法在各种情况下的计算复杂度。

Procedure ThriSearch(A, x, n, j) integer low, high, p1, p2 low ←1; high ←n while low ≤high dop1←⎣⎦3/)2(high low + ; p2←⎣⎦3/)2(high low + case:x=A(p1): j ←p1; return :x=A(p2): j ←p2; return :x<A(p1): high ←p1-1 :x>A(p2): low ←p2+1:else: low ←p1+1; high ←p2-1end caserepeat j ←0 end ThriSearchT(n)= ⎩⎨⎧+)()3/()(n f n T n g 否则足够小ng(n)= O (1) f(n)= O (1)成功:O(1), O(log3(n)), O(log3(n))最好,平均,最坏失败:O(log3(n)), O(log3(n)), O(log3(n))最好,平均,最坏15.对于含有n个内部结点的二元树,证明E=I+2n,其中,E,I分别为外部和内部路径长度。

证明:数学归纳法①当n=1时,易知E=2,I=0,所以E=I+2n成立;②假设n≤k(k>0)时,E=I+2n成立;③则当n=k+1时,不妨假定找到某个内结点x为叶结点(根据二元扩展树的定义,一定存在这样的结点x,且设该结点的层数为h),将结点x及其左右子结点(外结点)从原树中摘除,生成新二元扩展树。

此时新二元扩展树内部结点为k个,则满足E k=I k+2k,考察原树的外部路径长度为E k+1= E k-(h-1)+2h,内部路径长度为Ik+1=Ik+(h-1),所以Ek+1= Ik+2k+h+1= Ik+1+2k+2=Ik+1+2(k+1),综合①②③知命题成立。

16.以比较为基础(基本操作)的分类算法最坏情况的时间下界是什么?答:)(nn logθ17对线性存储的有序表中元素的以比较为基础的检索算法最坏时间的下界是什么?简要说明理由。

相关文档
最新文档