1.简单
插入排序(insertion sort)的最坏情况时间复杂度是多少?
- AO(n)
- BO(n log n)
- CO(log n)
- DO(n²)
2.简单
对范围在 0 到 k 之间的 n 个整数进行计数排序(counting sort),运行时间是多少?
- AO(n + k)
- BO(n²)
- CO(k log n)
- DO(n log n)
3.简单
一个算法的运行时间是 O(n)。这种增长称为什么?
- A对数
- B线性
- C常数
- D平方
4.中等
递推式 T(n) = 2T(n/2) + O(n) 的解是:
- AO(n²)
- BO(log n)
- CO(n log n)
- DO(n)
5.中等
对于在满时将容量翻倍的动态数组,追加元素的均摊(amortised)时间复杂度是多少?
- AO(log n)
- BO(n)
- CO(1)
- DO(n²)
6.中等
对长度为 m 和 n 的两个字符串求最长公共子序列,标准动态规划算法的时间复杂度是多少?
- AO(2m+n)
- BO(mn log n)
- CO(m + n)
- DO(mn)
7.困难
旅行商问题如何分类?
- A判定版本属于 P,但优化版本是 NP 完全的
- B判定版本是 NP 完全的,优化版本是 NP 难的
- C它属于 P,因为 Dijkstra 算法通过把每个城市访问一次来求解它
- D它是不可判定的
8.困难
下列哪个可满足性问题已知可以在多项式时间内求解?
- A2-SAT,每个子句至多有两个文字
- B3-SAT,每个子句恰好有三个文字
- C合取范式公式上的一般 SAT
- D电路可满足性问题
答案
- 1. D · O(n²)
- 2. A · O(n + k)
- 3. B · 线性
- 4. C · O(n log n)
- 5. C · O(1)
- 6. D · O(mn)
- 7. B · 判定版本是 NP 完全的,优化版本是 NP 难的
- 8. A · 2-SAT,每个子句至多有两个文字
完整分步解答:请在 examproblems.com 上练习本主题。