算法与复杂度练习卷(附答案)
免费可打印的算法与复杂度练习卷:8 道题,从简单到考试水平,附答案。可打印或另存为 PDF。
教师请注意: 可免费打印、复印并在课堂上使用。每份新练习题都有新的数值和独立的答案。欢迎在课程页面添加指向 ExamProblems 的链接。
姓名: ____________________ 日期: ____________
1.简单
选择排序(selection sort)是如何工作的?
- A通过移动元素,把每个元素插入到不断增长的有序部分中
- B把数组对半分开再合并
- C反复找出未排序部分的最小值,并把它交换到前面
- D反复交换顺序错误的相邻元素
2.简单
在有序数组上进行二分查找(binary search)的时间复杂度是多少?
- AO(n)
- BO(log n)
- CO(n log n)
- DO(1)
3.简单
在已经有序的数组上,插入排序的最好情况时间复杂度是多少?
- AO(n²)
- BO(n)
- CO(n log n)
- DO(1)
4.中等
哪种排序算法是稳定的?
- A归并排序
- B快速排序(常见的原地版本)
- C堆排序
- D选择排序(常见版本)
5.中等
关于一个没有可达基本情况的递归函数,下列哪个说法是正确的?
- A它会不断调用自身,直到调用栈溢出
- B它会自动返回 0
- C它的运行时间为 O(1)
- D编译器总会把它变成能安全结束的循环
6.中等
在无权图上进行广度优先搜索(BFS)可以求出:
- A从起始节点出发、按边数计的最短路径
- B含负权重边的图中的最短路径
- C最小生成树
- D所有图的拓扑序
7.困难
使用主定理,T(n) = 8T(n/2) + O(n²) 的解是:
- AΘ(n log n)
- BΘ(n³)
- CΘ(n² log n)
- DΘ(n²)
8.困难
当 n 很大时,n! 与 2ⁿ 相比如何?
- An! 是 O(n²)
- B2ⁿ 比 n! 增长得快
- Cn! 比 2ⁿ 增长得快
- D两者以相同的速率增长
答案
- 1. C · 反复找出未排序部分的最小值,并把它交换到前面
- 2. B · O(log n)
- 3. B · O(n)
- 4. A · 归并排序
- 5. A · 它会不断调用自身,直到调用栈溢出
- 6. A · 从起始节点出发、按边数计的最短路径
- 7. B · Θ(n³)
- 8. C · n! 比 2ⁿ 增长得快
完整分步解答:请在 examproblems.com 上练习本主题。