1.简单
分治算法的三个步骤是什么?
- A读取、计算、写入
- B猜测、检查、重复
- C排序、查找、返回
- D分解、解决、合并
2.简单
一个 O(n) 算法在 n = 100 万时需要 3 秒。n = 200 万时大约需要多长时间?
- A9 秒
- B6 秒
- C12 秒
- D3 秒
3.简单
哪种记号表示增长的下界?
- AΩ(Big Omega)
- BO(Big O)
- CΘ(Big Theta)
- Do(little o)
4.中等
下面代码的时间复杂度是多少:for i = 1 to n: for j = 1 to i: 执行 O(1) 的工作?
- AO(n³)
- BO(n²)
- CO(n)
- DO(n log n)
5.中等
对长度为 m 和 n 的两个字符串求最长公共子序列,标准动态规划算法的时间复杂度是多少?
- AO(m + n)
- BO(mn)
- CO(2m+n)
- DO(mn log n)
6.中等
递推式 T(n) = 2T(n/2) + O(n) 的解是:
- AO(n)
- BO(log n)
- CO(n²)
- DO(n log n)
7.困难
在有 V 个顶点、E 条边的图上,使用二叉堆的 Dijkstra 算法运行时间是多少?
- AO(V + E)
- BO(V³)
- CO((V + E) log V)
- DO(V × E)
8.困难
哪种算法通过反复加入不会形成环的最便宜的边来求最小生成树?
- AFloyd–Warshall
- BDijkstra 算法
- CKruskal 算法
- D从一个节点出发的 Prim 算法
答案
- 1. D · 分解、解决、合并
- 2. B · 6 秒
- 3. A · Ω(Big Omega)
- 4. B · O(n²)
- 5. B · O(mn)
- 6. D · O(n log n)
- 7. C · O((V + E) log V)
- 8. C · Kruskal 算法
完整分步解答:请在 examproblems.com 上练习本主题。