1.简单
当 n 变大时,下列哪一项增长最慢?
- AO(n)
- BO(n²)
- CO(n log n)
- DO(log n)
2.简单
哪种排序算法会反复交换顺序错误的相邻元素?
- A堆排序(Heap sort)
- B冒泡排序(Bubble sort)
- C归并排序(Merge sort)
- D快速排序(Quicksort)
3.简单
归并排序采用哪种设计策略?
- A分治法(divide and conquer)
- B动态规划
- C蛮力法
- D贪心选择
4.中等
用自底向上的表格计算第 n 个斐波那契数,时间复杂度是多少?
- AO(2ⁿ)
- BO(n²)
- CO(n)
- DO(log n)
5.中等
说一个 O(n²) 算法也是 O(n³),这正确吗?
- A正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- B不正确,因为 Big O 必须始终给出函数的确切增长率
- C正确,但仅当 n 小于 100 时
- D不正确,因为当 n 很大时 n³ 小于 n²
6.中等
贪心算法(greedy algorithm):
- A在每一步都做出局部最优的选择
- B只使用递归
- C尝试所有可能的解
- D总能给出最优解
7.困难
要证明一个新问题 X 是 NP 难(NP-hard)的,必须做什么?
- A证明 X 能在多项式时间内被验证
- B证明 X 对于小规模输入没有多项式算法
- C把一个已知的 NP 难问题在多项式时间内归约到 X
- D把 X 在多项式时间内归约到一个已知的 NP 难问题
8.困难
Held–Karp 动态规划算法能精确求解旅行商问题。对 n 个城市,它的运行时间是多少?
- AO(n² 2ⁿ)
- BO(n!)
- CO(n³)
- DO(2n²)
答案
- 1. D · O(log n)
- 2. B · 冒泡排序(Bubble sort)
- 3. A · 分治法(divide and conquer)
- 4. C · O(n)
- 5. A · 正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- 6. A · 在每一步都做出局部最优的选择
- 7. C · 把一个已知的 NP 难问题在多项式时间内归约到 X
- 8. A · O(n² 2ⁿ)
完整分步解答:请在 examproblems.com 上练习本主题。