你好,我是胡光。今天,我来公布一下选择题和主观题的答案。
1.下面这些对于堆的描述中,错误的选项是()
A. 由于堆可以存储在一个数组中,所以堆属于一种线性结构
B. 堆分为大顶堆与小顶堆,大顶堆的堆顶是最大值
C. 在一个数组上,建立一个堆的时间复杂度不可能低于 O(nlogn)
D. 对顶堆主要可以解决动态查找中位数的问题
解析:A/C
A 中,堆属于树形结构,一个数据结构属于什么结构,看的是思维逻辑结构中的样子,而不是代码实现中的样子。
C 中,线性建堆法的时间复杂度为 O(n)
2.关于快速排序优化中的“基准值选取优”的说法,错误的是()
A. 三点取中法的优化,是概率性优化,程序是否展现出优化效果,要看具体的数据分布
B. 三点取中法的优化,可以保证在所有数据上,都能展现出优化以后的好效果
C. 基准值选取优化,根本目的是为了让程序实现更简单
D. 基准值选取优化,根本目的是为了稳定住快速排序的时间复杂度,使其在最差的情况下,也能表现良好
解析:B/C
A、B 是一组,A 中的说法是对的,三点取中法是否展现出优化效果,要看具体的数据分布。
C、D 是一组,D 中的说法是对的,根本目的是为了稳定住快速排序的时间复杂度,可以从快速排序的时间复杂度推导入手理解。
3.关于归并排序的说法中,错误的是()
A. 归并排序和快速排序一样,最坏时间复杂度是 $O(n^2)$,最好是 $O(nlogn)$
B. 归并排序最好、最坏、平均时间复杂度都是 $O(nlogn)$
C. 归并排序和快速排序一样,都属于稳定排序,相同值排序以后,相对位置保持不变
D. 归并排序和快速排序不一样,快速排序属于稳定排序,归并排序属于非稳定排序
解析:A/C/D
A、B 是一组,B 中说的是对的,归并排序最好、最坏、平均时间复杂度都是 $O(nlogn)$。
C、D 看似是一组,可 C、D 中说得都是错的。快速排序是非稳定排序,归并排序是稳定排序。所谓稳定或者不稳定,是指排序以后,相同大小的元素的相对位置是否发生改变。
解析:以下是我想到的4类情况。
解析:以下是我给出的4种示例情况
好了,这节课就到这里,我们下节课见。