1.简单
哪种排序算法选择一个基准,并把数组划分为较小元素和较大元素两部分?
- A快速排序
- B冒泡排序
- C插入排序
- D归并排序
2.简单
选择排序(selection sort)是如何工作的?
- A反复交换顺序错误的相邻元素
- B通过移动元素,把每个元素插入到不断增长的有序部分中
- C反复找出未排序部分的最小值,并把它交换到前面
- D把数组对半分开再合并
3.简单
O(2ⁿ) 的增长称为什么?
- A线性
- B多项式级
- C指数级
- D对数级
4.中等
简单的递归阶乘函数 fact(n) = n × fact(n − 1) 使用多少栈空间?
- AO(n)
- BO(1)
- CO(log n)
- DO(n²)
5.中等
你对一个 n 个元素的数组排序一次,然后用二分查找回答 k 次成员查询。总代价是多少?
- AO(k n log n)
- BO(n + k)
- CO(nk)
- DO(n log n + k log n)
6.中等
说一个 O(n²) 算法也是 O(n³),这正确吗?
- A不正确,因为 Big O 必须始终给出函数的确切增长率
- B正确,但仅当 n 小于 100 时
- C不正确,因为当 n 很大时 n³ 小于 n²
- D正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
7.困难
Held–Karp 动态规划算法能精确求解旅行商问题。对 n 个城市,它的运行时间是多少?
- AO(n³)
- BO(n² 2ⁿ)
- CO(2n²)
- DO(n!)
8.困难
关于类 NP 的哪个定义是正确的?
- A不能在多项式时间内求解的问题
- B给定证书时,其"是"答案能在多项式时间内验证的判定问题
- C任何算法都无法求解的问题
- D非多项式的问题
答案
- 1. A · 快速排序
- 2. C · 反复找出未排序部分的最小值,并把它交换到前面
- 3. C · 指数级
- 4. A · O(n)
- 5. D · O(n log n + k log n)
- 6. D · 正确,因为 Big O 是上界,而 n² 的增长不比 n³ 快
- 7. B · O(n² 2ⁿ)
- 8. B · 给定证书时,其"是"答案能在多项式时间内验证的判定问题
完整分步解答:请在 examproblems.com 上练习本主题。