1.简单
哪种排序算法选择一个基准,并把数组划分为较小元素和较大元素两部分?
- A插入排序
- B冒泡排序
- C快速排序
- D归并排序
2.简单
什么是记忆化(memoisation)?
- A存储函数调用的结果,使重复调用能直接从内存中得到答案
- B函数返回后释放内存
- C自动把递归转换为等价的循环,从而不需要调用栈
- D在每行代码旁边写注释
3.简单
归并排序采用哪种设计策略?
- A贪心选择
- B动态规划
- C分治法(divide and conquer)
- D蛮力法
4.中等
一个问题具有最优子结构是什么意思?
- A每个子问题的规模都相同
- B该问题恰好有一个最优解,所有子问题共享这个解
- C最优解可以由其子问题的最优解构造出来
- D该问题可以在常数时间内求解
5.中等
为什么动态规划不能真正加速归并排序?
- A动态规划只适用于图问题,不适用于数组
- B归并排序已经是 O(n)
- C它的子问题不重叠,因此没有可以复用的结果
- D归并排序没有递归结构
6.中等
对 n 个元素的数组进行归并排序,递归共有多少层?
- A约 √n 层
- B约 n 层
- C约 log₂ n 层
- D约 n / 2 层
7.困难
递推式 T(n) = 2T(n/2) + n log n 的解是什么?
- AΘ(n log² n)
- BΘ(n)
- CΘ(n log n)
- DΘ(n²)
8.困难
哪种技术能使快速排序在任意输入上的期望运行时间为 O(n log n)?
- A均匀随机地选择基准
- B只对左侧进行递归
- C总是选择第一个元素
- D在运行快速排序前先对输入排序
答案
- 1. C · 快速排序
- 2. A · 存储函数调用的结果,使重复调用能直接从内存中得到答案
- 3. C · 分治法(divide and conquer)
- 4. C · 最优解可以由其子问题的最优解构造出来
- 5. C · 它的子问题不重叠,因此没有可以复用的结果
- 6. C · 约 log₂ n 层
- 7. A · Θ(n log² n)
- 8. A · 均匀随机地选择基准
完整分步解答:请在 examproblems.com 上练习本主题。