1.简单
在已经有序的数组上,插入排序的最好情况时间复杂度是多少?
- AO(n log n)
- BO(n²)
- CO(1)
- DO(n)
2.简单
哪种排序算法会反复交换顺序错误的相邻元素?
- A快速排序(Quicksort)
- B冒泡排序(Bubble sort)
- C堆排序(Heap sort)
- D归并排序(Merge sort)
3.简单
对范围在 0 到 k 之间的 n 个整数进行计数排序(counting sort),运行时间是多少?
- AO(n²)
- BO(n log n)
- CO(k log n)
- DO(n + k)
4.中等
为什么动态规划不能真正加速归并排序?
- A归并排序没有递归结构
- B它的子问题不重叠,因此没有可以复用的结果
- C动态规划只适用于图问题,不适用于数组
- D归并排序已经是 O(n)
5.中等
用标准的三重循环计算两个 n × n 矩阵的乘积,时间复杂度是多少?
- AO(n²)
- BO(n² log n)
- CO(n)
- DO(n³)
6.中等
在无权图上进行广度优先搜索(BFS)可以求出:
- A所有图的拓扑序
- B含负权重边的图中的最短路径
- C最小生成树
- D从起始节点出发、按边数计的最短路径
7.困难
Cook–Levin 定理确立了什么?
- A布尔可满足性问题(SAT)是 NP 完全的
- B停机问题是不可判定的
- C每个 NP 问题都能在指数时间内求解
- DP 不等于 NP
8.困难
为什么在有序数组中任何基于比较的查找在最坏情况下都需要 Ω(log n) 次比较?
- A有 n 种可能结果的决策树,其深度至少为 log₂ n
- B每次比较都需要对数时间
- C二分查找是唯一可能的算法,它需要 log₂ n 次比较
- D每个元素都必须至少比较一次
答案
- 1. D · O(n)
- 2. B · 冒泡排序(Bubble sort)
- 3. D · O(n + k)
- 4. B · 它的子问题不重叠,因此没有可以复用的结果
- 5. D · O(n³)
- 6. D · 从起始节点出发、按边数计的最短路径
- 7. A · 布尔可满足性问题(SAT)是 NP 完全的
- 8. A · 有 n 种可能结果的决策树,其深度至少为 log₂ n
完整分步解答:请在 examproblems.com 上练习本主题。