1.简单
标准的基于数组的归并排序使用多少额外内存?
- AO(n)
- BO(log n)
- CO(n²)
- DO(1)
2.简单
一个 O(n²) 算法在 n = 1000 时需要 1 秒。n = 2000 时大约需要多长时间?
- A4 秒
- B2 秒
- C1 秒
- D8 秒
3.简单
3n² + 5n + 2 的 Big O 是什么?
- AO(n³)
- BO(5n)
- CO(n²)
- DO(3n²)
4.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n²)
- BΩ(n)
- CΩ(log n)
- DΩ(n log n)
5.中等
快速排序的最坏情况时间复杂度是多少?
- AO(n)
- BO(n log n)
- CO(log n)
- DO(n²)
6.中等
说一个 O(n²) 算法也是 O(n³),这正确吗?
- A不正确,因为当 n 很大时 n³ 小于 n²
- B不正确,因为 Big O 必须始终给出函数的确切增长率
- C正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- D正确,但仅当 n 小于 100 时
7.困难
不可判定问题与难解问题有什么区别?
- A难解问题无法被任何算法求解,而不可判定问题只需要指数时间
- B两者都意味着该问题根本没有算法
- C不可判定问题属于 NP,而难解问题属于 P
- D不可判定问题没有任何能处理所有输入的算法,而难解问题有算法,但太慢
8.困难
下面代码的时间复杂度是多少:for i = 1 to n: for (j = i; j ≤ n; j = j + i) 执行 O(1) 的工作?
- AO(n log n)
- BO(n √n)
- CO(n)
- DO(n²)
答案
- 1. A · O(n)
- 2. A · 4 秒
- 3. C · O(n²)
- 4. D · Ω(n log n)
- 5. D · O(n²)
- 6. C · 正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- 7. D · 不可判定问题没有任何能处理所有输入的算法,而难解问题有算法,但太慢
- 8. A · O(n log n)
完整分步解答:请在 examproblems.com 上练习本主题。