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

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

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

姓名: ____________________   日期: ____________

1.简单

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

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

对范围在 0 到 k 之间的 n 个整数进行计数排序(counting sort),运行时间是多少?

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

什么是算法?

  1. A任何带有图形界面的计算机程序
  2. B一种存储数字的数据结构
  3. C一种为书写数学公式而设计的编程语言
  4. D解决问题的、由有限个明确定义的步骤组成的序列
4.中等

递推式 T(n) = 2T(n/2) + O(1) 的解是什么?

  1. AO(n²)
  2. BO(n log n)
  3. CO(n)
  4. DO(log n)
5.中等

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

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

哪种排序算法是稳定的?

  1. A快速排序(常见的原地版本)
  2. B归并排序
  3. C堆排序
  4. D选择排序(常见版本)
7.困难

为什么在单链表上二分查找不能达到 O(log n) 的时间?

  1. A链表无法排序
  2. B二分查找至少需要两倍的内存
  3. C链表节点上的比较更慢
  4. D由于不能按下标直接访问,到达中间元素需要 O(n) 步
8.困难

在有 V 个顶点、E 条边的图上,使用二叉堆的 Dijkstra 算法运行时间是多少?

  1. AO((V + E) log V)
  2. BO(V³)
  3. CO(V + E)
  4. DO(V × E)

答案

  1. 1. A · O(n)
  2. 2. D · O(n + k)
  3. 3. D · 解决问题的、由有限个明确定义的步骤组成的序列
  4. 4. C · O(n)
  5. 5. A · 插入排序开销小,在小规模或几乎有序的输入上很快
  6. 6. B · 归并排序
  7. 7. D · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
  8. 8. A · O((V + E) log V)

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