1.简单
一个包含两层嵌套循环、每层都执行 n 次的算法,通常具有哪种复杂度?
- AO(n²)
- BO(2n)
- CO(n)
- DO(log n)
2.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(1)
- BO(log n)
- CO(n²)
- DO(n)
3.简单
选择排序(selection sort)是如何工作的?
- A把数组对半分开再合并
- B反复找出未排序部分的最小值,并把它交换到前面
- C反复交换顺序错误的相邻元素
- D通过移动元素,把每个元素插入到不断增长的有序部分中
4.中等
一个函数先运行一个 n 次迭代的循环,然后再单独运行另一个 n 次迭代的循环。它的时间复杂度是多少?
- AO(n²)
- BO(n)
- CO(log n)
- DO(2ⁿ)
5.中等
均摊分析衡量的是什么?
- A算法在最好输入上的代价
- B在随机输入上的期望代价
- C在最坏情况的操作序列上,每个操作的平均代价
- D序列中任何位置上单个最昂贵操作的代价
6.中等
哪种排序算法是稳定的?
- A选择排序(常见版本)
- B快速排序(常见的原地版本)
- C归并排序
- D堆排序
7.困难
下面代码的时间复杂度是多少: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²)
8.困难
停机问题(halting problem)表明:
- A每个程序最终都会停机
- B应当避免使用循环
- C有些程序在更快的计算机上运行得更快,所以是否停机取决于硬件
- D不存在一种算法能对所有程序和输入判定其是否会停机
答案
- 1. A · O(n²)
- 2. D · O(n)
- 3. B · 反复找出未排序部分的最小值,并把它交换到前面
- 4. B · O(n)
- 5. C · 在最坏情况的操作序列上,每个操作的平均代价
- 6. C · 归并排序
- 7. A · O(n log n)
- 8. D · 不存在一种算法能对所有程序和输入判定其是否会停机
完整分步解答:请在 examproblems.com 上练习本主题。