1.简单
当 n 很大时,哪个复杂度类增长最快?
- AO(n²)
- BO(2ⁿ)
- CO(n log n)
- DO(n³)
2.简单
选择排序(selection sort)是如何工作的?
- A把数组对半分开再合并
- B反复交换顺序错误的相邻元素
- C通过移动元素,把每个元素插入到不断增长的有序部分中
- D反复找出未排序部分的最小值,并把它交换到前面
3.简单
下列哪个运行时间是多项式的?
- AO(2ⁿ)
- BO(n³)
- CO(nⁿ)
- DO(n!)
4.中等
贪心算法(greedy algorithm):
- A在每一步都做出局部最优的选择
- B只使用递归
- C总能给出最优解
- D尝试所有可能的解
5.中等
在包含 1,000,000 个元素的有序数组上,二分查找在最坏情况下大约需要多少次比较?
- A约 100 次
- B约 1,000 次
- C约 20 次
- D约 500,000 次
6.中等
下面代码的时间复杂度是多少:for i = 1 to n: (j = 1; while j < n: j = j × 2)?
- AO(log n)
- BO(n log n)
- CO(n)
- DO(n²)
7.困难
为什么哈希表的平均查找时间是 O(1),而最坏情况是 O(n)?
- A数组的访问时间是 O(n)
- B键必须先排序
- C哈希函数运行很慢
- D许多键可能冲突(collision)到同一个桶中
8.困难
关于类 NP 的哪个定义是正确的?
- A任何算法都无法求解的问题
- B不能在多项式时间内求解的问题
- C非多项式的问题
- D给定证书时,其"是"答案能在多项式时间内验证的判定问题
答案
- 1. B · O(2ⁿ)
- 2. D · 反复找出未排序部分的最小值,并把它交换到前面
- 3. B · O(n³)
- 4. A · 在每一步都做出局部最优的选择
- 5. C · 约 20 次
- 6. B · O(n log n)
- 7. D · 许多键可能冲突(collision)到同一个桶中
- 8. D · 给定证书时,其"是"答案能在多项式时间内验证的判定问题
完整分步解答:请在 examproblems.com 上练习本主题。