1.简单
O(2ⁿ) 的增长称为什么?
- A对数级
- B线性
- C指数级
- D多项式级
2.简单
分治算法的三个步骤是什么?
- A分解、解决、合并
- B读取、计算、写入
- C猜测、检查、重复
- D排序、查找、返回
3.简单
哪种排序算法会反复交换顺序错误的相邻元素?
- A堆排序(Heap sort)
- B冒泡排序(Bubble sort)
- C归并排序(Merge sort)
- D快速排序(Quicksort)
4.中等
在边权非负的图中,哪种算法用于求单源最短路径?
- ADijkstra 算法
- B深度优先搜索(DFS)
- C任何情况下都必须使用 Bellman–Ford
- DKruskal 算法
5.中等
均摊分析衡量的是什么?
- A在随机输入上的期望代价
- B在最坏情况的操作序列上,每个操作的平均代价
- C序列中任何位置上单个最昂贵操作的代价
- D算法在最好输入上的代价
6.中等
递推式 T(n) = T(n − 1) + O(n) 的解是什么?
- AO(2ⁿ)
- BO(n)
- CO(n²)
- DO(n log n)
7.困难
22n 属于 O(2ⁿ) 吗?
- A属于,因为两者都是指数级的
- B属于,因为在 Big O 中指数里的常数因子总是被忽略
- C不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- D不属于,因为 22n 增长得比 2ⁿ 慢
8.困难
关于在无序数组中选择第 k 小的元素,下列哪个说法是正确的?
- A选择总是需要 Ω(n log n),因为必须先排序
- B快速选择的期望时间为 O(n),而中位数的中位数法保证最坏情况为 O(n)
- C快速选择的最坏情况为 O(log n),因为它只对枢轴的一侧递归
- D选择只能在 O(n²) 内完成
答案
- 1. C · 指数级
- 2. A · 分解、解决、合并
- 3. B · 冒泡排序(Bubble sort)
- 4. A · Dijkstra 算法
- 5. B · 在最坏情况的操作序列上,每个操作的平均代价
- 6. C · O(n²)
- 7. C · 不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- 8. B · 快速选择的期望时间为 O(n),而中位数的中位数法保证最坏情况为 O(n)
完整分步解答:请在 examproblems.com 上练习本主题。