1.简单
插入排序(insertion sort)的最坏情况时间复杂度是多少?
- AO(n log n)
- BO(log n)
- CO(n)
- DO(n²)
2.简单
通过下标访问数组中的元素需要:
- AO(log n)
- BO(n²)
- CO(1)
- DO(n)
3.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(n)
- BO(log n)
- CO(1)
- DO(n²)
4.中等
一个函数先运行一个 n 次迭代的循环,然后再单独运行另一个 n 次迭代的循环。它的时间复杂度是多少?
- AO(2ⁿ)
- BO(log n)
- CO(n)
- DO(n²)
5.中等
快速排序的最坏情况时间复杂度是多少?
- AO(n log n)
- BO(n²)
- CO(log n)
- DO(n)
6.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n log n)
- BΩ(n)
- CΩ(n²)
- DΩ(log n)
7.困难
旅行商问题如何分类?
- A判定版本属于 P,但优化版本是 NP 完全的
- B判定版本是 NP 完全的,优化版本是 NP 难的
- C它是不可判定的
- D它属于 P,因为 Dijkstra 算法通过把每个城市访问一次来求解它
8.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A链表节点上的比较更慢
- B二分查找至少需要两倍的内存
- C链表无法排序
- D由于不能按下标直接访问,到达中间元素需要 O(n) 步
答案
- 1. D · O(n²)
- 2. C · O(1)
- 3. A · O(n)
- 4. C · O(n)
- 5. B · O(n²)
- 6. A · Ω(n log n)
- 7. B · 判定版本是 NP 完全的,优化版本是 NP 难的
- 8. D · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
完整分步解答:请在 examproblems.com 上练习本主题。