1.简单
当 n 变大时,下列哪一项增长最慢?
- AO(n²)
- BO(n log n)
- CO(log n)
- DO(n)
2.简单
对范围在 0 到 k 之间的 n 个整数进行计数排序(counting sort),运行时间是多少?
- AO(n + k)
- BO(n²)
- CO(n log n)
- DO(k log n)
3.简单
分治算法的三个步骤是什么?
- A排序、查找、返回
- B读取、计算、写入
- C分解、解决、合并
- D猜测、检查、重复
4.中等
朴素递归斐波那契(fib(n) = fib(n−1) + fib(n−2))的时间复杂度是:
- A对数级
- B指数级
- C线性
- D常数
5.中等
递推式 T(n) = T(n/2) + O(1) 的解是什么?
- AO(n log n)
- BO(n)
- CO(log n)
- DO(1)
6.中等
为什么许多库排序函数在子数组很小时会改用插入排序?
- A递归算法无法处理少于 10 个元素的数组
- B插入排序开销小,在小规模或几乎有序的输入上很快
- C插入排序在最坏情况下是 O(n log n)
- D在大规模输入上,插入排序比任何其他排序算法使用的内存都少
7.困难
哪种算法通过反复加入不会形成环的最便宜的边来求最小生成树?
- AFloyd–Warshall
- BKruskal 算法
- C从一个节点出发的 Prim 算法
- DDijkstra 算法
8.困难
关于 log(n!),哪个界是正确的?
- AΘ(log n)
- BΘ(n)
- CΘ(n²)
- DΘ(n log n)
答案
- 1. C · O(log n)
- 2. A · O(n + k)
- 3. C · 分解、解决、合并
- 4. B · 指数级
- 5. C · O(log n)
- 6. B · 插入排序开销小,在小规模或几乎有序的输入上很快
- 7. B · Kruskal 算法
- 8. D · Θ(n log n)
完整分步解答:请在 examproblems.com 上练习本主题。