1.简单
一个 O(n²) 算法在 n = 1000 时需要 1 秒。n = 2000 时大约需要多长时间?
- A4 秒
- B8 秒
- C1 秒
- D2 秒
2.简单
哪种排序算法会反复交换顺序错误的相邻元素?
- A快速排序(Quicksort)
- B归并排序(Merge sort)
- C堆排序(Heap sort)
- D冒泡排序(Bubble sort)
3.简单
当 n 很大时,哪个复杂度类增长最快?
- AO(n log n)
- BO(2ⁿ)
- CO(n³)
- DO(n²)
4.中等
在活动选择问题中,哪条贪心规则总能得到数量最多的互不重叠的活动?
- A先选择最短的活动
- B选择最早开始的活动
- C选择最早结束的活动,然后在与之相容的活动中重复这一步
- D先选择与其他活动重叠最少的活动,然后在与之相容的活动中重复这一步
5.中等
简单的递归阶乘函数 fact(n) = n × fact(n − 1) 使用多少栈空间?
- AO(n²)
- BO(n)
- CO(1)
- DO(log n)
6.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n²)
- BΩ(log n)
- CΩ(n log n)
- DΩ(n)
7.困难
插入排序在有序输入上运行时间为 O(n)。这与比较排序的 Ω(n log n) 下界矛盾吗?
- A不矛盾,下界针对的是所有输入中的最坏情况,而不是每一个输入
- B不矛盾,因为插入排序不是比较排序
- C矛盾,因此这个下界是错的
- D矛盾,但仅对长度小于 100 的数组
8.困难
用自底向上的方法从 n 个无序元素构建二叉堆的时间复杂度是多少?
- AO(n log n)
- BO(n)
- CO(log n)
- DO(n²)
答案
- 1. A · 4 秒
- 2. D · 冒泡排序(Bubble sort)
- 3. B · O(2ⁿ)
- 4. C · 选择最早结束的活动,然后在与之相容的活动中重复这一步
- 5. B · O(n)
- 6. C · Ω(n log n)
- 7. A · 不矛盾,下界针对的是所有输入中的最坏情况,而不是每一个输入
- 8. B · O(n)
完整分步解答:请在 examproblems.com 上练习本主题。