1.简单
选择排序(selection sort)是如何工作的?
- A把数组对半分开再合并
- B反复找出未排序部分的最小值,并把它交换到前面
- C反复交换顺序错误的相邻元素
- D通过移动元素,把每个元素插入到不断增长的有序部分中
2.简单
f(n) = Θ(g(n)) 是什么意思?
- Af 的增长严格快于 g
- Bf 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- Cf 的增长严格慢于 g
- D对每个 n,f 总是小于 g,因此 g 是它的上界,但绝不是下界
3.简单
3n² + 5n + 2 的 Big O 是什么?
- AO(n³)
- BO(3n²)
- CO(5n)
- DO(n²)
4.中等
对于在满时将容量翻倍的动态数组,追加元素的均摊(amortised)时间复杂度是多少?
- AO(log n)
- BO(n²)
- CO(n)
- DO(1)
5.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n)
- BΩ(log n)
- CΩ(n log n)
- DΩ(n²)
6.中等
对长度为 m 和 n 的两个字符串求最长公共子序列,标准动态规划算法的时间复杂度是多少?
- AO(m + n)
- BO(mn log n)
- CO(2m+n)
- DO(mn)
7.困难
哪种算法通过反复加入不会形成环的最便宜的边来求最小生成树?
- AKruskal 算法
- BDijkstra 算法
- CFloyd–Warshall
- D从一个节点出发的 Prim 算法
8.困难
Cook–Levin 定理确立了什么?
- A每个 NP 问题都能在指数时间内求解
- BP 不等于 NP
- C停机问题是不可判定的
- D布尔可满足性问题(SAT)是 NP 完全的
答案
- 1. B · 反复找出未排序部分的最小值,并把它交换到前面
- 2. B · f 与 g 以相同的速率增长,上下都被 g 的常数倍所界定
- 3. D · O(n²)
- 4. D · O(1)
- 5. C · Ω(n log n)
- 6. D · O(mn)
- 7. A · Kruskal 算法
- 8. D · 布尔可满足性问题(SAT)是 NP 完全的
完整分步解答:请在 examproblems.com 上练习本主题。