算法与复杂度练习卷(附答案)

免费可打印的算法与复杂度练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。

教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。

姓名: ____________________   日期: ____________

1.简单

在有序数组上进行二分查找(binary search)的时间复杂度是多少?

  1. AO(n)
  2. BO(log n)
  3. CO(n log n)
  4. DO(1)
2.简单

在 n 个数的无序数组中找出最大值的时间复杂度是多少?

  1. AO(1)
  2. BO(log n)
  3. CO(n)
  4. DO(n log n)
3.简单

归并排序采用哪种设计策略?

  1. A贪心选择
  2. B动态规划
  3. C蛮力法
  4. D分治法(divide and conquer)
4.中等

对 n 个元素的数组进行归并排序,递归共有多少层?

  1. A约 n / 2 层
  2. B约 n 层
  3. C约 √n 层
  4. D约 log₂ n 层
5.中等

为什么许多库排序函数在子数组很小时会改用插入排序?

  1. A插入排序在最坏情况下是 O(n log n)
  2. B在大规模输入上,插入排序比任何其他排序算法使用的内存都少
  3. C递归算法无法处理少于 10 个元素的数组
  4. D插入排序开销小,在小规模或几乎有序的输入上很快
6.中等

基于比较的排序在最坏情况下的下界是:

  1. AΩ(n log n)
  2. BΩ(n²)
  3. CΩ(log n)
  4. DΩ(n)
7.困难

关于 log(n!),哪个界是正确的?

  1. AΘ(n)
  2. BΘ(n log n)
  3. CΘ(log n)
  4. DΘ(n²)
8.困难

当 n 很大时,n! 与 2ⁿ 相比如何?

  1. A2ⁿ 比 n! 增长得快
  2. B两者以相同的速率增长
  3. Cn! 比 2ⁿ 增长得快
  4. Dn! 是 O(n²)

答案

  1. 1. B · O(log n)
  2. 2. C · O(n)
  3. 3. D · 分治法(divide and conquer)
  4. 4. D · 约 log₂ n 层
  5. 5. D · 插入排序开销小,在小规模或几乎有序的输入上很快
  6. 6. A · Ω(n log n)
  7. 7. B · Θ(n log n)
  8. 8. C · n! 比 2ⁿ 增长得快

完整分步解答:请在 examproblems.com 上练习本主题。