1.简单
下列哪个运行时间是多项式的?
- AO(n³)
- BO(nⁿ)
- CO(n!)
- DO(2ⁿ)
2.简单
当 n 变大时,下列哪一项增长最慢?
- AO(n)
- BO(log n)
- CO(n²)
- DO(n log n)
3.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(log n)
- BO(n²)
- CO(1)
- DO(n)
4.中等
用自底向上的表格计算第 n 个斐波那契数,时间复杂度是多少?
- AO(n²)
- BO(n)
- CO(2ⁿ)
- DO(log n)
5.中等
贪心算法(greedy algorithm):
- A尝试所有可能的解
- B总能给出最优解
- C在每一步都做出局部最优的选择
- D只使用递归
6.中等
在一个有序数组中,你从两端各放一个指针向内移动,寻找和为目标值的两个元素。时间复杂度是多少?
- AO(log n)
- BO(n²)
- CO(n log n)
- DO(n)
7.困难
下面代码的时间复杂度是多少:for i = 1 to n: for (j = i; j ≤ n; j = j + i) 执行 O(1) 的工作?
- AO(n √n)
- BO(n)
- CO(n²)
- DO(n log n)
8.困难
不可判定问题与难解问题有什么区别?
- A难解问题无法被任何算法求解,而不可判定问题只需要指数时间
- B不可判定问题没有任何能处理所有输入的算法,而难解问题有算法,但太慢
- C不可判定问题属于 NP,而难解问题属于 P
- D两者都意味着该问题根本没有算法
答案
- 1. A · O(n³)
- 2. B · O(log n)
- 3. D · O(n)
- 4. B · O(n)
- 5. C · 在每一步都做出局部最优的选择
- 6. D · O(n)
- 7. D · O(n log n)
- 8. B · 不可判定问题没有任何能处理所有输入的算法,而难解问题有算法,但太慢
完整分步解答:请在 examproblems.com 上练习本主题。