1.简单
在有序数组上进行二分查找(binary search)的时间复杂度是多少?
- AO(n)
- BO(log n)
- CO(n log n)
- DO(1)
2.简单
在 n 个数的无序数组中找出最大值的时间复杂度是多少?
- AO(1)
- BO(log n)
- CO(n)
- DO(n log n)
3.简单
归并排序采用哪种设计策略?
- A贪心选择
- B动态规划
- C蛮力法
- D分治法(divide and conquer)
4.中等
对 n 个元素的数组进行归并排序,递归共有多少层?
- A约 n / 2 层
- B约 n 层
- C约 √n 层
- D约 log₂ n 层
5.中等
为什么许多库排序函数在子数组很小时会改用插入排序?
- A插入排序在最坏情况下是 O(n log n)
- B在大规模输入上,插入排序比任何其他排序算法使用的内存都少
- C递归算法无法处理少于 10 个元素的数组
- D插入排序开销小,在小规模或几乎有序的输入上很快
6.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n log n)
- BΩ(n²)
- CΩ(log n)
- DΩ(n)
7.困难
关于 log(n!),哪个界是正确的?
- AΘ(n)
- BΘ(n log n)
- CΘ(log n)
- DΘ(n²)
8.困难
当 n 很大时,n! 与 2ⁿ 相比如何?
- A2ⁿ 比 n! 增长得快
- B两者以相同的速率增长
- Cn! 比 2ⁿ 增长得快
- Dn! 是 O(n²)
答案
- 1. B · O(log n)
- 2. C · O(n)
- 3. D · 分治法(divide and conquer)
- 4. D · 约 log₂ n 层
- 5. D · 插入排序开销小,在小规模或几乎有序的输入上很快
- 6. A · Ω(n log n)
- 7. B · Θ(n log n)
- 8. C · n! 比 2ⁿ 增长得快
完整分步解答:请在 examproblems.com 上练习本主题。