1.简单
二分查找对输入有什么要求?
- A数组只能包含正数
- B数组必须有序
- C数组元素不能超过 1000 个
- D数组长度必须是 2 的幂
2.简单
log₂ 1024 等于多少?
- A12
- B512
- C10
- D32
3.简单
O(2ⁿ) 的增长称为什么?
- A对数级
- B指数级
- C多项式级
- D线性
4.中等
在活动选择问题中,哪条贪心规则总能得到数量最多的互不重叠的活动?
- A先选择最短的活动
- B先选择与其他活动重叠最少的活动,然后在与之相容的活动中重复这一步
- C选择最早开始的活动
- D选择最早结束的活动,然后在与之相容的活动中重复这一步
5.中等
递推式 T(n) = T(n − 1) + O(n) 的解是什么?
- AO(2ⁿ)
- BO(n log n)
- CO(n)
- DO(n²)
6.中等
朴素递归斐波那契(fib(n) = fib(n−1) + fib(n−2))的时间复杂度是:
- A对数级
- B常数
- C指数级
- D线性
7.困难
为什么在有序数组中任何基于比较的查找在最坏情况下都需要 Ω(log n) 次比较?
- A有 n 种可能结果的决策树,其深度至少为 log₂ n
- B每次比较都需要对数时间
- C每个元素都必须至少比较一次
- D二分查找是唯一可能的算法,它需要 log₂ n 次比较
8.困难
停机问题(halting problem)表明:
- A不存在一种算法能对所有程序和输入判定其是否会停机
- B应当避免使用循环
- C有些程序在更快的计算机上运行得更快,所以是否停机取决于硬件
- D每个程序最终都会停机
答案
- 1. B · 数组必须有序
- 2. C · 10
- 3. B · 指数级
- 4. D · 选择最早结束的活动,然后在与之相容的活动中重复这一步
- 5. D · O(n²)
- 6. C · 指数级
- 7. A · 有 n 种可能结果的决策树,其深度至少为 log₂ n
- 8. A · 不存在一种算法能对所有程序和输入判定其是否会停机
完整分步解答:请在 examproblems.com 上练习本主题。