1.简单
哪种记号表示增长的上界?
- ABig O
- BLittle omega
- CBig Theta
- DBig Omega
2.简单
一个 O(n²) 算法在 n = 1000 时需要 1 秒。n = 2000 时大约需要多长时间?
- A8 秒
- B4 秒
- C1 秒
- D2 秒
3.简单
下列哪个运行时间是多项式的?
- AO(n³)
- BO(nⁿ)
- CO(2ⁿ)
- DO(n!)
4.中等
为什么许多库排序函数在子数组很小时会改用插入排序?
- A在大规模输入上,插入排序比任何其他排序算法使用的内存都少
- B递归算法无法处理少于 10 个元素的数组
- C插入排序在最坏情况下是 O(n log n)
- D插入排序开销小,在小规模或几乎有序的输入上很快
5.中等
当问题具有以下特征时,动态规划(dynamic programming)很有用:
- A只有一个循环
- B重叠子问题和最优子结构
- C完全没有子问题,因此一步就能解决
- D只有随机输入
6.中等
在活动选择问题中,哪条贪心规则总能得到数量最多的互不重叠的活动?
- A先选择最短的活动
- B选择最早开始的活动
- C选择最早结束的活动,然后在与之相容的活动中重复这一步
- D先选择与其他活动重叠最少的活动,然后在与之相容的活动中重复这一步
7.困难
取一个极大匹配中每条边的两个端点,可以得到一个顶点覆盖。这个覆盖有多好?
- A与最优解相比质量未知
- B至多是最小顶点覆盖大小的两倍
- C至多是最小值的 log n 倍
- D总是一个最小顶点覆盖
8.困难
关于在无序数组中选择第 k 小的元素,下列哪个说法是正确的?
- A快速选择的最坏情况为 O(log n),因为它只对枢轴的一侧递归
- B选择只能在 O(n²) 内完成
- C选择总是需要 Ω(n log n),因为必须先排序
- D快速选择的期望时间为 O(n),而中位数的中位数法保证最坏情况为 O(n)
答案
- 1. A · Big O
- 2. B · 4 秒
- 3. A · O(n³)
- 4. D · 插入排序开销小,在小规模或几乎有序的输入上很快
- 5. B · 重叠子问题和最优子结构
- 6. C · 选择最早结束的活动,然后在与之相容的活动中重复这一步
- 7. B · 至多是最小顶点覆盖大小的两倍
- 8. D · 快速选择的期望时间为 O(n),而中位数的中位数法保证最坏情况为 O(n)
完整分步解答:请在 examproblems.com 上练习本主题。