1.简单
什么是带权图?
- A有些顶点因为边更多而比其他顶点更重的图
- B边数多于顶点数的图
- C存储在磁盘上的图
- D每条边都有一个数值(如代价或距离)的图
2.简单
静态数组与动态数组的主要区别是什么?
- A动态数组可以通过移到更大的内存块来增长
- B静态数组的下标访问更慢
- C静态数组只能存储数字
- D动态数组把元素存储在链接的节点中,因此可以一次增长一个
3.简单
在树中,什么是兄弟节点?
- A位于不同子树中同一深度的节点
- B一个节点及其父节点
- C没有子节点的节点
- D拥有同一个父节点的节点
4.中等
Dijkstra 算法使用哪种抽象数据类型来选择下一个要处理的顶点?
- AFIFO 队列
- B最小优先队列
- C栈
- D无序集合
5.中等
在存储于容量为 n 的数组中的循环队列里,下标 i 之后的下一个位置如何计算?
- A(i − 1) mod n
- B2i + 1
- C(i + 1) mod n
- Di + 1
6.中等
如何向二叉堆中插入一个新元素?
- A从头重建整个堆
- B通过把所有更大的元素右移一位,将它插入到有序位置
- C把它放在数组末尾,只要它违反堆性质就将其上浮(sift up)
- D把它放在根上,再将其下沉(sift down)
7.困难
在简单均匀哈希假设下,在含 n 个键、m 个桶的拉链法哈希表中查找的期望时间是多少?
- AO(m)
- BO(n)
- CO(1 + α),其中 α = n / m
- DO(log n)
8.困难
红黑树的规则对含 n 个键的树的高度给出了什么保证?
- A高度恰好为 log2 n
- B高度至多为 log2 n + 1
- C高度至多为 2 log2(n + 1)
- D高度至多为 n / 2
答案
- 1. D · 每条边都有一个数值(如代价或距离)的图
- 2. A · 动态数组可以通过移到更大的内存块来增长
- 3. D · 拥有同一个父节点的节点
- 4. B · 最小优先队列
- 5. C · (i + 1) mod n
- 6. C · 把它放在数组末尾,只要它违反堆性质就将其上浮(sift up)
- 7. C · O(1 + α),其中 α = n / m
- 8. C · 高度至多为 2 log2(n + 1)
完整分步解答:请在 examproblems.com 上练习本主题。