1.简单
如果一个操作的运行时间是 O(1),这意味着什么?
- A它只能运行一次
- B它的运行时间不随输入规模增长
- C它总是恰好花费一秒
- D它每秒运行时间恰好处理一个元素
2.简单
什么是记忆化(memoisation)?
- A函数返回后释放内存
- B自动把递归转换为等价的循环,从而不需要调用栈
- C在每行代码旁边写注释
- D存储函数调用的结果,使重复调用能直接从内存中得到答案
3.简单
一个问题通常在什么情况下被称为易解的(tractable)?
- A能在多项式时间内求解
- B只能通过尝试所有可能来求解
- C没有解
- D能在常数时间内求解
4.中等
用标准的三重循环计算两个 n × n 矩阵的乘积,时间复杂度是多少?
- AO(n)
- BO(n³)
- CO(n² log n)
- DO(n²)
5.中等
哪种排序算法是稳定的?
- A选择排序(常见版本)
- B堆排序
- C快速排序(常见的原地版本)
- D归并排序
6.中等
一个函数先运行一个 n 次迭代的循环,然后再单独运行另一个 n 次迭代的循环。它的时间复杂度是多少?
- AO(n)
- BO(2ⁿ)
- CO(n²)
- DO(log n)
7.困难
关于 P 和 NP,下列哪个说法是正确的?
- ANP 表示“not polynomial”(非多项式)
- BNP 问题无法被快速验证
- C已经证明 P ≠ NP
- DP 中的每个问题也都属于 NP
8.困难
Strassen 算法在矩阵乘法中对半尺寸的分块只做 7 次而不是 8 次递归乘法。它的运行时间是多少?
- AΘ(n² log n)
- BΘ(nlog₂ 7),约为 n2.81
- CΘ(n2)
- DΘ(n³)
答案
- 1. B · 它的运行时间不随输入规模增长
- 2. D · 存储函数调用的结果,使重复调用能直接从内存中得到答案
- 3. A · 能在多项式时间内求解
- 4. B · O(n³)
- 5. D · 归并排序
- 6. A · O(n)
- 7. D · P 中的每个问题也都属于 NP
- 8. B · Θ(nlog₂ 7),约为 n2.81
完整分步解答:请在 examproblems.com 上练习本主题。