1.简单
在 n 个数的无序数组中找出最大值的时间复杂度是多少?
- AO(n)
- BO(log n)
- CO(n log n)
- DO(1)
2.简单
对范围在 0 到 k 之间的 n 个整数进行计数排序(counting sort),运行时间是多少?
- AO(n²)
- BO(n log n)
- CO(k log n)
- DO(n + k)
3.简单
什么是算法?
- A任何带有图形界面的计算机程序
- B一种存储数字的数据结构
- C一种为书写数学公式而设计的编程语言
- D解决问题的、由有限个明确定义的步骤组成的序列
4.中等
递推式 T(n) = 2T(n/2) + O(1) 的解是什么?
- AO(n²)
- BO(n log n)
- CO(n)
- DO(log n)
5.中等
为什么许多库排序函数在子数组很小时会改用插入排序?
- A插入排序开销小,在小规模或几乎有序的输入上很快
- B在大规模输入上,插入排序比任何其他排序算法使用的内存都少
- C插入排序在最坏情况下是 O(n log n)
- D递归算法无法处理少于 10 个元素的数组
6.中等
哪种排序算法是稳定的?
- A快速排序(常见的原地版本)
- B归并排序
- C堆排序
- D选择排序(常见版本)
7.困难
为什么在单链表上二分查找不能达到 O(log n) 的时间?
- A链表无法排序
- B二分查找至少需要两倍的内存
- C链表节点上的比较更慢
- D由于不能按下标直接访问,到达中间元素需要 O(n) 步
8.困难
在有 V 个顶点、E 条边的图上,使用二叉堆的 Dijkstra 算法运行时间是多少?
- AO((V + E) log V)
- BO(V³)
- CO(V + E)
- DO(V × E)
答案
- 1. A · O(n)
- 2. D · O(n + k)
- 3. D · 解决问题的、由有限个明确定义的步骤组成的序列
- 4. C · O(n)
- 5. A · 插入排序开销小,在小规模或几乎有序的输入上很快
- 6. B · 归并排序
- 7. D · 由于不能按下标直接访问,到达中间元素需要 O(n) 步
- 8. A · O((V + E) log V)
完整分步解答:请在 examproblems.com 上练习本主题。