1.简单
插入排序(insertion sort)的最坏情况时间复杂度是多少?
- AO(n)
- BO(log n)
- CO(n log n)
- DO(n²)
2.简单
什么是蛮力算法(brute-force algorithm)?
- A尝试所有可能的候选解的算法
- B随机猜测答案的算法
- C在多个处理器上运行的算法
- D总是使用递归的算法
3.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(n)
- BO(1)
- CO(log n)
- DO(n²)
4.中等
简单的递归阶乘函数 fact(n) = n × fact(n − 1) 使用多少栈空间?
- AO(n)
- BO(n²)
- CO(log n)
- DO(1)
5.中等
递推式 T(n) = 2T(n − 1) + O(1) 的解是什么?
- AO(n²)
- BO(2ⁿ)
- CO(n log n)
- DO(n)
6.中等
在活动选择问题中,哪条贪心规则总能得到数量最多的互不重叠的活动?
- A选择最早开始的活动
- B先选择最短的活动
- C先选择与其他活动重叠最少的活动,然后在与之相容的活动中重复这一步
- D选择最早结束的活动,然后在与之相容的活动中重复这一步
7.困难
如果有人为某个 NP 完全问题找到了多项式时间算法,会有什么结果?
- A只有那一个问题会进入 P
- B所有指数时间算法都会立即变成线性时间
- C停机问题将变得可判定
- DNP 中的每个问题都能在多项式时间内求解,因此 P = NP
8.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A由于不能按下标直接访问,到达中间元素需要 O(n) 步
- B链表节点上的比较更慢
- C链表无法排序
- D二分查找至少需要两倍的内存
答案
- 1. D · O(n²)
- 2. A · 尝试所有可能的候选解的算法
- 3. A · O(n)
- 4. A · O(n)
- 5. B · O(2ⁿ)
- 6. D · 选择最早结束的活动,然后在与之相容的活动中重复这一步
- 7. D · NP 中的每个问题都能在多项式时间内求解,因此 P = NP
- 8. A · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
完整分步解答:请在 examproblems.com 上练习本主题。