1.简单
通过下标访问数组中的元素需要:
- AO(n²)
- BO(n)
- CO(log n)
- DO(1)
2.简单
O(2ⁿ) 的增长称为什么?
- A对数级
- B指数级
- C线性
- D多项式级
3.简单
归并排序的最坏情况时间复杂度是多少?
- AO(n)
- BO(n²)
- CO(log n)
- DO(n log n)
4.中等
在一个有序数组中,你从两端各放一个指针向内移动,寻找和为目标值的两个元素。时间复杂度是多少?
- AO(log n)
- BO(n)
- CO(n²)
- DO(n log n)
5.中等
对于在满时将容量翻倍的动态数组,追加元素的均摊(amortised)时间复杂度是多少?
- AO(log n)
- BO(n)
- CO(1)
- DO(n²)
6.中等
递推式 T(n) = T(n − 1) + O(1) 的解是什么?
- AO(log n)
- BO(n)
- CO(n²)
- DO(2ⁿ)
7.困难
最短简单路径可以在多项式时间内求出。在一般图中求两个顶点之间的最长简单路径,已知情况如何?
- A可以把权重取反后用 Dijkstra 算法求解
- B总能在 O(V + E) 内求解
- C它是 NP 难的
- D它是不可判定的
8.困难
插入排序在有序输入上运行时间为 O(n)。这与比较排序的 Ω(n log n) 下界矛盾吗?
- A不矛盾,下界针对的是所有输入中的最坏情况,而不是每一个输入
- B矛盾,因此这个下界是错的
- C不矛盾,因为插入排序不是比较排序
- D矛盾,但仅对长度小于 100 的数组
答案
- 1. D · O(1)
- 2. B · 指数级
- 3. D · O(n log n)
- 4. B · O(n)
- 5. C · O(1)
- 6. B · O(n)
- 7. C · 它是 NP 难的
- 8. A · 不矛盾,下界针对的是所有输入中的最坏情况,而不是每一个输入
完整分步解答:请在 examproblems.com 上练习本主题。