1.简单
空间复杂度衡量的是:
- A程序编译后程序文件占用的磁盘空间
- B随着输入增大,算法所需的内存量
- C计算机的物理尺寸
- D代码的行数
2.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(log n)
- BO(n²)
- CO(1)
- DO(n)
3.简单
选择排序(selection sort)是如何工作的?
- A把数组对半分开再合并
- B通过移动元素,把每个元素插入到不断增长的有序部分中
- C反复交换顺序错误的相邻元素
- D反复找出未排序部分的最小值,并把它交换到前面
4.中等
对长度为 m 和 n 的两个字符串求最长公共子序列,标准动态规划算法的时间复杂度是多少?
- AO(2m+n)
- BO(mn)
- CO(mn log n)
- DO(m + n)
5.中等
你对一个 n 个元素的数组排序一次,然后用二分查找回答 k 次成员查询。总代价是多少?
- AO(nk)
- BO(n + k)
- CO(n log n + k log n)
- DO(k n log n)
6.中等
哪种排序算法是稳定的?
- A堆排序
- B归并排序
- C选择排序(常见版本)
- D快速排序(常见的原地版本)
7.困难
Cook–Levin 定理确立了什么?
- A停机问题是不可判定的
- B每个 NP 问题都能在指数时间内求解
- CP 不等于 NP
- D布尔可满足性问题(SAT)是 NP 完全的
8.困难
下面代码的时间复杂度是多少:for i = 1 to n: for (j = i; j ≤ n; j = j + i) 执行 O(1) 的工作?
- AO(n log n)
- BO(n √n)
- CO(n)
- DO(n²)
答案
- 1. B · 随着输入增大,算法所需的内存量
- 2. D · O(n)
- 3. D · 反复找出未排序部分的最小值,并把它交换到前面
- 4. B · O(mn)
- 5. C · O(n log n + k log n)
- 6. B · 归并排序
- 7. D · 布尔可满足性问题(SAT)是 NP 完全的
- 8. A · O(n log n)
完整分步解答:请在 examproblems.com 上练习本主题。