1.简单
归并排序的最坏情况时间复杂度是多少?
- AO(log n)
- BO(n log n)
- CO(n²)
- DO(n)
2.简单
一个包含两层嵌套循环、每层都执行 n 次的算法,通常具有哪种复杂度?
- AO(2n)
- BO(n²)
- CO(log n)
- DO(n)
3.简单
哪种排序算法选择一个基准,并把数组划分为较小元素和较大元素两部分?
- A冒泡排序
- B插入排序
- C归并排序
- D快速排序
4.中等
递推式 T(n) = 2T(n/2) + O(1) 的解是什么?
- AO(n log n)
- BO(n)
- CO(n²)
- DO(log n)
5.中等
硬币面值为 1、3 和 4,金额为 6,贪心的"先取最大硬币"方法使用多少枚硬币?与最优解相比如何?
- A贪心用 3 枚;最优解是 2 枚
- B贪心用 4 枚;最优解是 3 枚
- C贪心用 2 枚;最优解是 2 枚
- D贪心用 3 枚;最优解是 3 枚
6.中等
递推式 T(n) = T(n − 1) + O(n) 的解是什么?
- AO(2ⁿ)
- BO(n)
- CO(n log n)
- DO(n²)
7.困难
一次加一操作可能翻转许多位,那么二进制计数器加一的均摊代价是多少?
- A每次加一 O(log n)
- B每次加一 O(1)
- C每次加一 O(n)
- D每次加一 O(n log n)
8.困难
Bellman–Ford 算法如何检测从源点可达的负权环?
- A检查是否有边的权重为负
- B它运行两次 Dijkstra 算法,并比较两次的距离结果
- C用深度优先搜索统计环的数量
- D在 V − 1 轮之后,检查是否还有边可以被松弛
答案
- 1. B · O(n log n)
- 2. B · O(n²)
- 3. D · 快速排序
- 4. B · O(n)
- 5. A · 贪心用 3 枚;最优解是 2 枚
- 6. D · O(n²)
- 7. B · 每次加一 O(1)
- 8. D · 在 V − 1 轮之后,检查是否还有边可以被松弛
完整分步解答:请在 examproblems.com 上练习本主题。