第一章 单元测试

1、 问题:算法是指解决问题的方法或过程,它包含一系列步骤,用来将输入数据转换成输出结果。
选项:
A:对
B:错
答案: 【

2、 问题:使用伪代码描述算法具有( )等优点。
选项:
A:简单易懂
B:容易修改
C:格式统一规范
D:易于转化为程序语言代码
答案: 【简单易懂,容易修改,易于转化为程序语言代码

3、 问题:算法通常具有( )的性质。
选项:
A:输入:有零个或多个输入
B:输出:至少有一个输出
C:确定性:组成算法的每条指令清晰、无歧义
D:有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限
答案: 【输入:有零个或多个输入,输出:至少有一个输出,确定性:组成算法的每条指令清晰、无歧义,有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限

4、 问题:程序是算法用某种程序设计语言的具体实现,程序需满足算法的所有性质。
选项:
A:对
B:错
答案: 【

5、 问题:常用的描述算法的形式有( )。
选项:
A:自然语言
B:机器语言
C:伪代码
D:程序流程图
答案: 【自然语言,伪代码,程序流程图

6、 问题:函数f(n)=20log3^n的渐进表达式是( )。
选项:
A:O(n)
B:0(n^2)
C:0(1)
D:0(log(n))
答案: 【O(n)

7、 问题:一个算法的优劣由( )决定。
选项:
A:空间复杂度
B:代码长度
C:时间复杂度
D:使用的编程语言
答案: 【空间复杂度,时间复杂度

8、 问题:如果存在正的常数C和自然数N0,使得当N≥N0时有f(N)≤Cg(N),则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=O(g(N)),即f(N)的阶不高于g(N)的阶。
选项:
A:对
B:错
答案: 【

9、 问题:分析以下代码的时间复杂度:
int func(int n)
{
int i=1, k=0;
while(i<=n) {
k++;
i=i*2;
}
return k;
}

选项:
A:O(n)
B:O(logn)
C:O(n^2)
D:O(n/2)
答案: 【O(logn)

10、 问题:对于f(n)=n,下列说法正确的是( )。
选项:
A:f(n)=O(n)
B:f(n)=O(1/n)
C:f(n)=O(n^2)
D:f(n)=O(n^3)
答案: 【f(n)=O(n),f(n)=O(n^2),f(n)=O(n^3)

第二章 单元测试

1、 问题:递归函数是指在一个函数体中出现直接或间接调用该函数自身的函数。
选项:
A:对
B:错
答案: 【

2、 问题:已知f(1)=1,f(n)=f(n-1)+n,那么f(50)的作用是( )。
选项:
A:计算50个1的和。
B:计算1到50的乘积。
C:计算1到50的和。
D:计算斐波拉契数列的第50个元素的值。
答案: 【计算1到50的和。

3、 问题:递归的优点包括( )。
选项:
A:结构清晰
B:可读性强
C:容易用数学归纳法来证明算法的正确性
D:运行效率高
答案: 【结构清晰,可读性强,容易用数学归纳法来证明算法的正确性

4、 问题:在经典的汉诺塔问题中,如果有5个圆盘需要从A柱移至C柱,最少需要移动( )步。
选项:
A:31
B:41
C:32
D:28
答案: 【31

5、 问题:分治法能解决的问题一般具有( )等特征。
选项:
A:该问题缩小到一定程度时可以容易地解决
B:最优子结构
C:分解出的子问题的解可以合并为原问题的解
D:子问题相互独立
答案: 【该问题缩小到一定程度时可以容易地解决,最优子结构,分解出的子问题的解可以合并为原问题的解,子问题相互独立

6、 问题:在使用分治法设计算法时,最好使子问题的规模大致相同,即将一个问题分成大小相等的多个子问题的处理方法是行之有效的。
选项:
A:对
B:错
答案: 【

7、 问题:给定递归公式T(n)=4T(n/2)+O(n),由主定理可以得知T(n)=( )。
选项:
A:O(logn)
B:O(nlogn)
C:O(n^2)
D:O(n)
答案: 【O(n^2)

8、 问题:已知某楼房共20层,如果采用二分查找,请问最多猜( )次就能猜出任意一个楼层。
选项:
A:3
B:4
C:5
D:6
答案: 【5

9、 问题:关于快速排序的时间复杂度,( )是正确的。
选项:
A:在最坏情况下时间复杂度为O(n^2)
B:在最好情况下时间复杂度为O(nlogn)
C:在平均情况下时间复杂度为O(n^2)
D:在平均情况下时间复杂度为O(nlogn)
答案: 【在最坏情况下时间复杂度为O(n^2),在最好情况下时间复杂度为O(nlogn),在平均情况下时间复杂度为O(nlogn)

10、 问题:快速排序是对传统排序算法( )的一种改进。
选项:
A:冒泡排序
B:选择排序
C:插入排序
D:归并排序
答案: 【冒泡排序

第三章 单元测试

1、 问题:能够使用动态规划算法来求解的问题通常需要具备两个重要的性质,它们分别是( )。
选项:
A:贪心选择性质
B:递归调用
C:最优子结构
D:重叠子问题
答案: 【最优子结构,重叠子问题

   

发表评论

电子邮件地址不会被公开。 必填项已用*标注