1.简单
在包含 n 个元素的无序数组中进行线性查找(linear search)的时间复杂度(最坏情况)是多少?
- AO(n)
- BO(log n)
- CO(n²)
- DO(1)
2.简单
O(2ⁿ) 的增长称为什么?
- A指数级
- B线性
- C对数级
- D多项式级
3.简单
什么是递归?
- A一种排序方法
- B一种数据结构
- C永远不会结束的循环
- D在更小的输入上调用自身的函数
4.中等
在一个有序数组中,你从两端各放一个指针向内移动,寻找和为目标值的两个元素。时间复杂度是多少?
- AO(log n)
- BO(n²)
- CO(n log n)
- DO(n)
5.中等
朴素递归斐波那契(fib(n) = fib(n−1) + fib(n−2))的时间复杂度是:
- A对数级
- B线性
- C指数级
- D常数
6.中等
基于比较的排序在最坏情况下的下界是:
- AΩ(n log n)
- BΩ(n)
- CΩ(n²)
- DΩ(log n)
7.困难
Bellman–Ford 算法如何检测从源点可达的负权环?
- A检查是否有边的权重为负
- B在 V − 1 轮之后,检查是否还有边可以被松弛
- C用深度优先搜索统计环的数量
- D它运行两次 Dijkstra 算法,并比较两次的距离结果
8.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A二分查找至少需要两倍的内存
- B链表节点上的比较更慢
- C由于不能按下标直接访问,到达中间元素需要 O(n) 步
- D链表无法排序
答案
- 1. A · O(n)
- 2. A · 指数级
- 3. D · 在更小的输入上调用自身的函数
- 4. D · O(n)
- 5. C · 指数级
- 6. A · Ω(n log n)
- 7. B · 在 V − 1 轮之后,检查是否还有边可以被松弛
- 8. C · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
完整分步解答:请在 examproblems.com 上练习本主题。