1.2-6
有组记录的排序码为{ 46,79,56,38,40,84 },则利用堆排序的方法建立的初始堆为:D (2分)
- 79,46,56,38,40,80
- 84,79,56,46,40,38
- 84,56,79,40,46,38
- 84,79,56,38,40,46
这个题要知道两点,首先你得知道堆排序是建立最大堆,第二你得会建堆
关于建堆,就是先把这组树写成一个完全二叉树,然后把它调整成一个最大堆。
过程其实类似堆的删除操作,就是每次从倒数第一个有儿子的结点开始,把每个结点都调成最大堆就好了
图示。。。凑活看吧
2.
对10TB的数据文件进行排序,应使用的方法是:C(1分)
- 希尔排序
- 堆排序
- 归并排序
- 快速排序
对于10TB的海量数据,数据不可能一次全部载入内存,传统的排序方法就不适用了,需要用到外排序的方法。外排序采用分治思想,即先对数据分块,对块内数据进行排序,然后采用归并排序的思想进行排序,得到数据的一个有序序列。
3.
下列排序方法中,若将顺序村吃更换为链式存储,则算法的时间效率会降低的是:D(2分)
1.插入排序;2.选择排序;3.起泡排序;4.希尔排序;5.堆排序
- 仅1、2
- 仅2、3
- 仅3、4
- 仅4、5
这个很难
插入排序、选择排序、起泡排序原本时间复杂度是O(n2),更换为链式存储后的时间复杂度还是O(n2)。希尔排序和堆排序都利用了顺序存储的随机访问特性(堆排序的这个特性体现在:取出最大堆的根节点后,更新堆的过程),而链式存储不支持这种性质,所以时间复杂度会增加,因此选D。
4.
2-9
{ 12,9,11,8,7,4,5,13,23 }是下列哪种方法第二趟排序后的结果? D(2分)
- 归并排序
- 堆排序
- 插入排序
- 基数排序
因为堆排序就是每次删除最大堆,并把它放在最后,其实这个过程有点像冒泡我觉得
5.
下列排序算法中,哪种算法可能出现:在最后一趟开始之前,所有的元素都不在其最终的位置上?B(设待排元素个数N>2) (2分)
- 冒泡排序
- 插入排序
- 堆排序
- 快速排序
这个很明显就是插入排序的特点
6.2-16
若数据元素序列{ 11,12,13,7,8,9,23,4,5 }是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是:C (2分)
- 冒泡排序
- 选择排序
- 插入排序
- 归并排序
这个题很好!!!
考查各排序算法的特点。
解答本题要对不同排序算法的特点极为清楚。
对于起泡排序和选择排序而言,每一趟过后都能确定一个元素的最终位置,而由题目中所说,前两个元素和后两个元素均不是最小或最大的两个元素并按序排列。
(二路)归并排序,第一趟排序结束都可以得到若干个有序子序列,而此时的序列中并没有两两元素有序排列。
插入排序在每趟排序结束后能保证前面的若干元素是有序的,而此时第二趟排序后,序列的前三个元素是有序的,符合其特点。故正确答案是C。
7.2-19
就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是: (1分)
- 堆排序 < 归并排序 < 快速排序
- 堆排序 > 归并排序 > 快速排序
- 堆排序 < 快速排序 < 归并排序
- 堆排序 > 快速排序 > 归并排序
一下两个题比一下记住就好
2-21
在基于比较的排序算法中,哪种算法的最坏情况下的时间复杂度不高于O(NlogN)?B (1分)
- 冒泡排序
- 归并排序
- 希尔排序
- 快速排序
作者: DS课程组
单位: 浙江大学
2-22
下列排序算法中,时间复杂度不受数据初始状态影响,恒为O(NlogN)的是:C (1分)
- 冒泡排序
- 直接选择排序
- 堆排序
- 快速排序