1.简单
一个算法的运行时间是 O(n)。这种增长称为什么?
- A线性
- B对数
- C平方
- D常数
2.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(log n)
- BO(1)
- CO(n)
- DO(n²)
3.简单
f(n) = Θ(g(n)) 是什么意思?
- A对每个 n,f 总是小于 g,因此 g 是它的上界,但绝不是下界
- Bf 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- Cf 的增长严格快于 g
- Df 的增长严格慢于 g
4.中等
在包含 1,000,000 个元素的有序数组上,二分查找在最坏情况下大约需要多少次比较?
- A约 20 次
- B约 100 次
- C约 1,000 次
- D约 500,000 次
5.中等
用自底向上的表格计算第 n 个斐波那契数,时间复杂度是多少?
- AO(n²)
- BO(log n)
- CO(2ⁿ)
- DO(n)
6.中等
一个问题具有最优子结构是什么意思?
- A每个子问题的规模都相同
- B最优解可以由其子问题的最优解构造出来
- C该问题可以在常数时间内求解
- D该问题恰好有一个最优解,所有子问题共享这个解
7.困难
取一个极大匹配中每条边的两个端点,可以得到一个顶点覆盖。这个覆盖有多好?
- A至多是最小顶点覆盖大小的两倍
- B至多是最小值的 log n 倍
- C与最优解相比质量未知
- D总是一个最小顶点覆盖
8.困难
关于 little-o 记号,下列哪个说法是正确的?
- An = o(n),因为每个函数都是自身的 little-o
- B2n = o(n),因为 2n 增长得慢
- Cn² = o(n)
- Dn = o(n²),但 n 不是 o(n)
答案
- 1. A · 线性
- 2. C · O(n)
- 3. B · f 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- 4. A · 约 20 次
- 5. D · O(n)
- 6. B · 最优解可以由其子问题的最优解构造出来
- 7. A · 至多是最小顶点覆盖大小的两倍
- 8. D · n = o(n²),但 n 不是 o(n)
完整分步解答:请在 examproblems.com 上练习本主题。