1、下列关于大O符号的描述正确的是( )。
A) f(n)= O(g(n))意味着f(n)的增长速度不超过g(n)。
B) f(n)= O(g(n))意味着存在正数c和n0,对于所有n ≥ n0,有0 ≤ f(n) ≤ c * g(n)。
C) 常函数可以写作O(1)。
D) f(n)= O(g(n))表示f(n)的阶不低于g(n)的阶。
正确答案:A, B, C
关于贪心算法的特性,以下说法正确的是( )。
A) 贪心选择性质是指问题的整体最优解可以通过一系列局部最优的选择来获得。
B) 贪心算法必须进行正确性证明。
C) 贪心法适用于组合优化问题。
D) 贪心算法总是能够找到全局最优解。
正确答案:A, B, C
在排序问题中,下列哪些方法属于预排序策略的应用?( )。
A) 使用比较计数排序来减少键值移动次数。
B) 使用分布计数排序以实现线性时间复杂度。
C) 对数组元素进行直接交换,如选择排序。
D) 利用二分查找提高检索效率。
正确答案:A, B
变治法中的变换方式包括( )。
A) 实例化简:把问题变为更简单的实例。
B) 改变表现:改变问题的表现形式而不改变其实质。
C) 问题化简:转换为另一个已知解法的问题。
D) 动态规划:将问题分解成子问题并存储中间结果。
正确答案:A, B, C
活动选择问题中,下列哪项是正确的贪心策略?( )
A) 开始时间早的优先。
B) 占用时间少的优先。
C) 结束时间早的优先。
D) 随机选择活动。
正确答案:C
单选题
在字符串匹配中,哪种方法不属于蛮力法?( )
A) 直接逐字符比较主串与模式串
B) Knuth-Morris-Pratt算法
C) Boyer-Moore算法
D) Horspool算法
正确答案:B
下面哪个不是解决凸包问题的方法?( )
A) 分治法
B) 按照极角排序后使用Graham扫描算法
C) 动态规划
D) Jarvis步进算法
正确答案:C
下列哪一种排序算法的时间复杂度在最坏情况下是O(n^2)? ( )
A) 快速排序
B) 归并排序
C) 堆排序
D) 插入排序
正确答案:A, D
在贪心算法中,活动选择问题采用哪种策略可以确保得到最大数量的兼容活动?( )
A) 开始时间最早的优先
B) 结束时间最早的优先
C) 活动持续时间最短的优先
D) 随机挑选活动
正确答案:B
下列哪个选项不是变治法的主要变换方式?( )
A) 实例化简
B) 改变表现
C) 动态规划
D) 问题化简
正确答案:C
对于字符串匹配问题,以下哪种方法属于蛮力法?( )
A) KMP算法
B) Boyer-Moore算法
C) Horspool算法
D) 直接逐字符比较主串与模式串
正确答案:D
关于哈希表冲突解决方法的说法,哪一项是不正确的?( )
A) 开放地址法通过计算新的哈希地址来解决冲突。
B) 链地址法通过链表连接具有相同哈希值的关键字。
C) 伪随机探测法总是使用固定的增量序列进行再散列。
D) 线性探测法是一种开放地址法的形式。
正确答案:C
在预排序策略的应用中,哪种排序方法能在线性时间内完成,但要求输入数据有特定范围限制?( )
A) 快速排序
B) 归并排序
C) 分布计数排序
D) 插入排序
正确答案:C
下列哪种情况不会出现在Horspool字符串匹配算法中?( )
A) 模式中不存在当前字符,移动距离为模式长度。
B) 模式中存在当前字符,但不是最后一个字符,移动到模式中该字符最后出现的位置。
C) 当前字符正好是模式的最后一个字符,但在模式其他部分也出现过,移动一个字符。
D) 模式中的每个字符都是唯一的,并且都存在于文本串中。
正确答案:D
下列哪种排序算法不属于比较类排序?( )
A) 冒泡排序
B) 计数排序
C) 插入排序
D) 快速排序
正确答案:B
在活动选择问题中,如果要证明贪心算法对所有实例都能得到正确解,应该使用什么数学方法?( )
A) 数学归纳法
B) 反证法
C) 构造法
D) 类比法
正确答案:A
在二叉搜索树中,若根节点的关键码是x,则左子树的所有关键码y满足什么条件?( )
A) y > x
B) y < x
C) y = x
D) y ≠ x
正确答案:B
在时空权衡的思想下,为了加速后面问题的求解,通常会采取什么措施?( )
A) 减少输入规模
B) 对问题的部分或全部输入做预处理并将额外信息存储起来
C) 使用更复杂的算法结构
D) 增加硬件资源
正确答案:B
判断题
- 算法的时间复杂度与问题的计算复杂度相同。(×)
- 冒泡排序的时间复杂度下界为Ω(n),因为至少需要遍历一次数组来确保所有元素都被检查过。(√)
- 在决策树模型中,任何算法要得到输出必须完成从根节点到叶节点路径上的所有运算。(√)
- 为了最小化不纯度,决策树在每个节点都会选择使得分裂后子节点纯度最高的特征进行分割。(×)
- 快速排序最坏情况下时间复杂度为O(n^2),而平均情况下为O(n log n)。(√)
- 分布计数排序适合于整数范围有限的情况,并且能在线性时间内完成排序。(√)
- 蛮力字符串匹配是一种简单但低效的方法,因为它可能需要对主串中的每一个位置都尝试匹配模式串。(√)
- 比较计数排序通过记录每个元素应该放置的位置来避免不必要的元素移动。(√)
- 贪婪技术中的活动选择问题可以保证每次选择最早结束的活动总是能得到最大数量的兼容活动。(√)
- 如果一个问题具有最优子结构性质,那么它一定可以用动态规划或贪心算法求解。(×)