1.简单
哪种排序算法会反复交换顺序错误的相邻元素?
- A冒泡排序(Bubble sort)
- B堆排序(Heap sort)
- C归并排序(Merge sort)
- D快速排序(Quicksort)
2.简单
空间复杂度衡量的是:
- A计算机的物理尺寸
- B代码的行数
- C随着输入增大,算法所需的内存量
- D程序编译后程序文件占用的磁盘空间
3.简单
当 n 变大时,下列哪一项增长最慢?
- AO(n log n)
- BO(log n)
- CO(n)
- DO(n²)
4.中等
你对一个 n 个元素的数组排序一次,然后用二分查找回答 k 次成员查询。总代价是多少?
- AO(n + k)
- BO(k n log n)
- CO(n log n + k log n)
- DO(nk)
5.中等
快速排序总是使用第一个元素作为基准。它在哪种输入上表现出最坏情况?
- A随机顺序的数组
- B所有元素都不相同的数组
- C已经有序的数组
- D长度为 2 的数组
6.中等
硬币面值为 1、3 和 4,金额为 6,贪心的"先取最大硬币"方法使用多少枚硬币?与最优解相比如何?
- A贪心用 3 枚;最优解是 2 枚
- B贪心用 3 枚;最优解是 3 枚
- C贪心用 4 枚;最优解是 3 枚
- D贪心用 2 枚;最优解是 2 枚
7.困难
Karatsuba 乘法满足 T(n) = 3T(n/2) + O(n)。它的解是什么?
- AΘ(n log n)
- BΘ(n3)
- CΘ(n²)
- DΘ(nlog₂ 3),约为 n1.585
8.困难
关于类 P 的哪个定义是正确的?
- A能由确定性算法在多项式时间内求解的判定问题
- B在每台计算机上都需要指数时间的问题
- C其解可以被验证、但绝不能在多项式时间内找到的问题
- D能够并行求解的问题
答案
- 1. A · 冒泡排序(Bubble sort)
- 2. C · 随着输入增大,算法所需的内存量
- 3. B · O(log n)
- 4. C · O(n log n + k log n)
- 5. C · 已经有序的数组
- 6. A · 贪心用 3 枚;最优解是 2 枚
- 7. D · Θ(nlog₂ 3),约为 n1.585
- 8. A · 能由确定性算法在多项式时间内求解的判定问题
完整分步解答:请在 examproblems.com 上练习本主题。