1.简单
在有序数组上进行二分查找(binary search)的时间复杂度是多少?
- AO(n)
- BO(1)
- CO(n log n)
- DO(log n)
2.简单
通过下标访问数组中的元素需要:
- AO(n²)
- BO(n)
- CO(log n)
- DO(1)
3.简单
哪种记号表示增长的下界?
- AO(Big O)
- BΩ(Big Omega)
- Co(little o)
- DΘ(Big Theta)
4.中等
对长度为 m 和 n 的两个字符串求最长公共子序列,标准动态规划算法的时间复杂度是多少?
- AO(mn log n)
- BO(m + n)
- CO(mn)
- DO(2m+n)
5.中等
用标准的三重循环计算两个 n × n 矩阵的乘积,时间复杂度是多少?
- AO(n)
- BO(n³)
- CO(n² log n)
- DO(n²)
6.中等
一个函数先运行一个 n 次迭代的循环,然后再单独运行另一个 n 次迭代的循环。它的时间复杂度是多少?
- AO(n)
- BO(log n)
- CO(2ⁿ)
- DO(n²)
7.困难
用一个只保留最后两个值的循环计算第 n 个斐波那契数,时间和空间代价各是多少?
- AO(n) 时间和 O(1) 空间
- BO(log n) 时间和 O(n) 空间
- CO(2ⁿ) 时间和 O(1) 空间
- DO(n) 时间和 O(n) 空间
8.困难
22n 属于 O(2ⁿ) 吗?
- A不属于,因为 22n 增长得比 2ⁿ 慢
- B属于,因为在 Big O 中指数里的常数因子总是被忽略
- C不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
- D属于,因为两者都是指数级的
答案
- 1. D · O(log n)
- 2. D · O(1)
- 3. B · Ω(Big Omega)
- 4. C · O(mn)
- 5. B · O(n³)
- 6. A · O(n)
- 7. A · O(n) 时间和 O(1) 空间
- 8. C · 不属于,因为 22n = 4ⁿ,而 4ⁿ / 2ⁿ = 2ⁿ 无界地增长
完整分步解答:请在 examproblems.com 上练习本主题。