算法设计与分析期末复习题汇总

1、选择题

1.1 选择题1

1、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质 B、构造最优解 C、算出最优解 D、定义最优解

2、最大效益优先是( A )的一搜索方式。
A、分支界限法 B、动态规划法 C、贪心法 D、回溯法

3、最长公共子序列算法利用的算法是( B )。
A、分支界限法 B、动态规划法 C、贪心法 D、回溯法

4、 回溯法解TSP问题时的解空间树是( A )。
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、实现最长公共子序列利用的算法是( B )。
A、分治策略 B、动态规划法 C、贪心法 D、回溯法

10、下面不是分支界限法搜索方式的是( D )。
A、广度优先 B、最小耗费优先 C、最大效益优先 D、深度优先

11、下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法 B、动态规划法 C、贪心法 D、回溯法

12、 一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( B )。
A、重叠子问题 B、最优子结构性质 C、贪心选择性质 D、定义最优解

13、广度优先是( A )的一搜索方式。
A、分支界限法 B、动态规划法 C、贪心法 D、回溯法

14、背包问题的贪心算法所需的计算时间为( B )。
A、O(n2n) B、O(nlogn) C、O(2n) D、O(n)

15、实现最大子段和利用的算法是( B )。
A、分治策略 B、动态规划法 C、贪心法 D、回溯法

16、实现棋盘覆盖算法利用的算法是( A )。
A、分治法 B、动态规划法 C、贪心法 D、回溯法

17、下面是贪心算法的基本要素的是( C )。
A、重叠子问题 B、构造最优解 C、贪心选择性质 D、定义最优解

18、回溯法的效率不依赖于下列哪些因素( D )
A.满足显约束的值的个数 B. 计算约束函数的时间
C. 计算限界函数的时间 D. 确定解空间的时间

19、下面哪种函数是回溯法中为避免无效搜索采取的策略( B )
A.递归函数 B.剪枝函数 C。随机数函数 D.搜索函数

20、以深度优先方式系统搜索问题解的算法称为 ( D ) 。
A、分支界限算法 B、概率算法 C、贪心算法 D、回溯算法

1.2 选择题2

1、不能和final共存的关键字是( C )
A、statci B、class C、abstract D、public

2 、final不可以修饰 (D)
A、属性 B、类 C、方法 D、构造方法

3、Java中使用什么关键字修饰常量©
A、const B、float C、final D、define

4、String是一个对象,即它的默认值是(B)
A、1 B、null C、2 D、3

5、用于获取字符串长度的方法(A)
A、length() B、lengths() C、long() D、size()

6、30n,2logn,4,n! 按照渐近阶从低到高的顺序排列下列表达式:(D)
A. 4<30n<2logn<n! B. 30n<4<2logn<n!
C. n!<4<2logn<30n D. 4<2logn<30n<n!

7、快速排序算法的效率取决于(B)
A、序列是否有序排列 B、划分的对称性
C.、原始序列是否逆序排列 D、原始序列是否是正序排列

8、如果一个问题采用贪心算法、动态规划算法、回溯算法、分支限界算法都可以得到最优解,对四种算法进行比较,你认为最有可能的是( B )。
A、动态规划算法效率最高
B、贪心算法效率最高
C、回溯算法效率最高
D、分支限界算法效率最高

9、队列的特性是(A)。
A、先进先出 B、后进先出 C、结点的优先级 D、随机

10、栈的特性(A)。
A、先进后出 B、后进后出 C、结点的优先级 D、随机

11、优先队列(priority queue)通常采用 数据结构来实现。(B)
A、栈 B、堆 C、队列 D、二叉查找树

12、贪心算法的基本要素是 和最优子结构性质。(D)
A、时间复杂性 B、重叠子问题 C、定义最优解 D、贪心选择质

13、一个算法应该包含如下几条性质,除了 。(C)
A、有限性 B、正确性 C、二义性 D、可终止性质

14、衡量一个算法好坏的标准是(C )。
A、运行速度快 B、占用空间少 C、时间复杂度低 D、代码短

15、下面问题(B )不能使用贪心法解决。
A、单源最短路径问题 B、N皇后问题 C、最小花费生成树问题 D、背包问题

2、判断题

2.1 判断题1

1、问题的两个要素是输入和实例。(×)

2、算法不能采用自然语言描述,必须使用程序设计语言进行描述。(×)

3、贪心法算法中不能解决0/1背包问题。(√)

4、贪心算法总是能够得到全局最优解。(×)

5、在算法设计中,时间复杂度和空间复杂度通常是可以互相转化的。(√)

6、哈希表(散列表)的查找时间复杂度一定为O(1)。(√)

7、二分搜索算法是利用分治策略实现的算法。(√)

8、最优子结构性质是贪心算法与动态规划算法的共同点。(√)

9、下列算法中通常以自底向上的方式求解最优解的是动态规划法。(√)

10、快速排序算法的平均时间复杂度为O(n^2)。(×)

2.2 判断题2

1、 归并排序算法是一种非稳定排序算法。(×)

2、 堆排序算法是通过构建大顶堆或小顶堆来实现排序的。(√)

3、 算法的时间复杂度是指在最坏情况下算法执行所需的基本操作次数。(√)

4、 哈希表(散列表)通过哈希函数将键映射到存储位置,因此哈希函数的设计对哈希表的性能至关重要。(√)

5、 动态规划算法通常用于解决具有重叠子问题和最优子结构性质的问题。(√)

3、填空题

3.1 算法填空

class Solution {
  public static int fibonacci(int n ){
        if (1、n= =0     ){
            return 0;
        }else if (2、n= =1     ){
            return 1;
        }else {
            return fibonacci(3、n-1   )+fibonacci(4、n-2     );
        }
   }
   
  public static void main(String[] args) {
        int n=4;
5Solution   . fibonacci(n);
 }
}



3.2 填空题2

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

2、求解整数分划问题时利用的算法是 递归法

3、贪心算法可以通过 局部最优 达到全局最优。

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

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

6、贪心方法采用 自顶向下求解的求解方式。

7、任何可用计算机求解的问题所需的时间都与其 规模 有关。

8、快速排序算法的基本思想是 分治法

9、贪心算法是一种在每一步选择中都采取最好或最优(即最有利)的选择,从而希望导致结果是 全局最好或最优 的算法。

10、堆排序算法中,构建的堆通常是一个 最大 堆或 最小 堆。

4、简答题

1、简述一下递归的三大要素。
答:
(1)第一要素:明确函数的功能。
(2)第二要素:寻找递归结束条件。
(3)第三要素:找出函数的等价关系式。

2、列举HashMap常见的5种方法。

答:put()、get()、remove()、keySet()、values()、entrySet()、containsKey()、containsValue()。

3、什么是数组,其在内存存储方式是?
答:
(1)数组对应的英文是array,是有限个相同类型的变量所组成的有序集合,数组中的每
一个变量被称为元素。
(2)数组在内存中的顺序存储,即元素之间紧密排列,既不能打乱元素的存储顺序,也不能跳过某个存储单元进行存储。

4、简述栈与队列的定义与区别。
(1)栈(stack)是一种只允许在一端进行插入或删除操作的线性数据结构。
(2)队列(queue)是只允许在一端进行插入操作,在另一端进行删除操作的线性数据结构。
(3)栈是先进后出,而队列是先进先出。

5、简述一下算法的重要特性。
答:确定性、可行性、输入、输出、有穷性

6、请解释算法的时间复杂度和空间复杂度的概念。
答:
(1)时间复杂度是指执行算法所需要的计算工作量,常用大O表示法来描述。

(2)空间复杂度是指执行这个算法所需要的内存空间。时间复杂度和空间复杂度都是评估算法性能的重要指标。

7、什么是剪枝函数?剪枝函数有哪两种?它们的作用分别是什么?
答:
(1)回溯法搜索解空间树时,通常采用剪枝函数避免无效搜索,提高回溯法的搜索效率。
(2)剪枝函数有约束函数和限界函数。
(3)约束函数在扩展结点处剪去不满足约束的子树;限界函数剪去得不到最优解的子树。

8、简述动态规划算法的主要步骤。
答:
(1)找出最优解的性质,并刻划其结构特征。
(2)递归地定义最优值。
(3)以自底向上的方式计算出最优值。
(4)根据计算最优值时得到的信息,构造最优解。

  • 26
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 计算机算法设计与分析是计算机科学与技术专业的一门重要课程,该课程旨在培养学生解决复杂问的能力,提高算法设计与分析的能力。复习该课程的期末考试,我建议可以从以下几个方面进行复习: 首先,复习算法的基本知识。包括递归与分治策略、动态规划、贪心算法、回溯算法等常见算法的基本原理和代码实现方法。 其次,深入理解常见的时间复杂度和空间复杂度分析方法,熟悉不同算法的优缺点,并能在不同问场景下选择合适的算法。 然后,重点复习常见的排序算法和查找算法,如冒泡排序、插入排序、选择排序、快速排序、堆排序等,以及线性查找、二分查找等。 另外,复习图算法,包括图的表示方法、图的遍历算法、最短路径算法(Dijkstra算法、Floyd-Warshall算法)和最小生成树算法(Prim算法、Kruskal算法)等。 最后,通过做一些实例和习,加深对算法的理解和应用能力,提高解的效率。 在复习过程中,可以参考csdn等一些相关的学习资源,查找更多的学习资料和参考目,加深对算法的认识。同时也可以结合自己的课堂笔记、教材和讲义,全面复习和总结。 总之,计算机算法设计与分析期末考试的复习需要全面、系统地复习相关算法和数据结构的知识,并能够熟练应用到实际问中。通过不断的实践和练习,提高解的能力和效率。 ### 回答2: 计算机算法设计与分析期末考试复习题介绍了一些重要的算法和数据结构,学生们可以通过复习这些目来准备考试。以下是一些常见的型和解答思路: 1. 排序算法:考察对常见排序算法的理解和分析。如快速排序、归并排序、堆排序等。需要掌握它们的时间复杂度、原理和实现方式,以及它们在不同场景下的优劣势。 2. 搜索算法:考察对常见搜索算法的掌握程度。如深度优先搜索(DFS)、广度优先搜索(BFS)、二分查找等。需要了解它们的原理、如何实现以及最优应用场景。 3. 图算法:考察对图算法的熟悉程度。如最短路径算法(如Dijkstra算法、Floyd-Warshall算法)、最小生成树算法(如Prim算法、Kruskal算法)等。需要了解它们的原理、时间复杂度和应用场景。 4. 动态规划:考察对动态规划算法的理解和应用。需要掌握动态规划的基本概念、状态转移方程的建立和求解。重点理解背包问、最长公共子序列等常见问的动态规划解法。 5. 数据结构:考察对常见数据结构的掌握程度。如数组、链表、栈、队列、二叉树、图等。需要了解它们的基本操作、特性、应用场景以及在算法中的使用方法。 在复习期间,建议学生们重点关注基础概念的理解、算法原理的掌握以及常见目的解技巧。同时,通过做大量的练习来提升自己的算法设计和分析能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值