1.简单
选择排序(selection sort)是如何工作的?
- A把数组对半分开再合并
- B反复交换顺序错误的相邻元素
- C反复找出未排序部分的最小值,并把它交换到前面
- D通过移动元素,把每个元素插入到不断增长的有序部分中
2.简单
f(n) = Θ(g(n)) 是什么意思?
- Af 的增长严格快于 g
- Bf 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- C对每个 n,f 总是小于 g,因此 g 是它的上界,但绝不是下界
- Df 的增长严格慢于 g
3.简单
一个问题通常在什么情况下被称为易解的(tractable)?
- A没有解
- B只能通过尝试所有可能来求解
- C能在多项式时间内求解
- D能在常数时间内求解
4.中等
对 n 个元素的数组进行归并排序,递归共有多少层?
- A约 √n 层
- B约 log₂ n 层
- C约 n / 2 层
- D约 n 层
5.中等
用自底向上的表格计算第 n 个斐波那契数,时间复杂度是多少?
- AO(log n)
- BO(n²)
- CO(2ⁿ)
- DO(n)
6.中等
朴素递归斐波那契(fib(n) = fib(n−1) + fib(n−2))的时间复杂度是:
- A常数
- B对数级
- C指数级
- D线性
7.困难
哪种技术能使快速排序在任意输入上的期望运行时间为 O(n log n)?
- A均匀随机地选择基准
- B在运行快速排序前先对输入排序
- C总是选择第一个元素
- D只对左侧进行递归
8.困难
22n 属于 O(2ⁿ) 吗?
- A不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- B属于,因为在 Big O 中指数里的常数因子总是被忽略
- C属于,因为两者都是指数级的
- D不属于,因为 22n 增长得比 2ⁿ 慢
答案
- 1. C · 反复找出未排序部分的最小值,并把它交换到前面
- 2. B · f 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- 3. C · 能在多项式时间内求解
- 4. B · 约 log₂ n 层
- 5. D · O(n)
- 6. C · 指数级
- 7. A · 均匀随机地选择基准
- 8. A · 不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
完整分步解答:请在 examproblems.com 上练习本主题。