1.简单
分治算法的三个步骤是什么?
- A分解、解决、合并
- B猜测、检查、重复
- C排序、查找、返回
- D读取、计算、写入
2.简单
3n² + 5n + 2 的 Big O 是什么?
- AO(n³)
- BO(3n²)
- CO(5n)
- DO(n²)
3.简单
归并排序采用哪种设计策略?
- A蛮力法
- B分治法(divide and conquer)
- C动态规划
- D贪心选择
4.中等
递推式 T(n) = 2T(n − 1) + O(1) 的解是什么?
- AO(n)
- BO(n²)
- CO(2ⁿ)
- DO(n log n)
5.中等
递推式 T(n) = T(n/2) + O(1) 的解是什么?
- AO(log n)
- BO(n)
- CO(1)
- DO(n log n)
6.中等
为什么在 Big O 中通常省略对数的底,例如写成 O(log n)?
- A不同底的对数之间只相差一个常数因子
- B对数总是被四舍五入为整数
- C底只在 n 很小时才有影响
- D计算机科学中所有对数的底都是 10,所以可以省略
7.困难
要证明一个判定问题 X 是 NP 完全的,必须证明哪两点?
- AX 能归约到 P 中的某个问题,并且 X 属于 NP
- BX 属于 P,并且 X 能归约到 SAT
- CX 属于 NP,并且某个已知的 NP 完全问题能在多项式时间内归约到 X
- DX 没有多项式算法,并且 X 是可判定的
8.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A链表无法排序
- B二分查找至少需要两倍的内存
- C链表节点上的比较更慢
- D由于不能按下标直接访问,到达中间元素需要 O(n) 步
答案
- 1. A · 分解、解决、合并
- 2. D · O(n²)
- 3. B · 分治法(divide and conquer)
- 4. C · O(2ⁿ)
- 5. A · O(log n)
- 6. A · 不同底的对数之间只相差一个常数因子
- 7. C · X 属于 NP,并且某个已知的 NP 完全问题能在多项式时间内归约到 X
- 8. D · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
完整分步解答:请在 examproblems.com 上练习本主题。