1.已知关键字序列 5 , 8 , 12 , 19 , 28 , 20 , 15 , 22 是小根堆(最小堆),插入关键字 3 ,调整后得到的小根堆是 。
-
3,5,12,8,28,20,15,22,19
-
3,5,12,19,20,15,22,8,28
-
3,8,12,5,20,15,22,28,19
-
3,12,5,8,28,20,15,22,19
解析: 小顶堆特点-根节点和不是叶子节点的节点。小于它的左孩子,也小于它的右孩子
根据关键字序列得到的小顶堆的二叉树形式如下图所示。
插入关键字3时,先将其放在小顶堆的末端,如图(2)所示。再将该关键字向上进行调整,得到的结果如图(3)所示。所以,调整后的小顶堆序列为3,5,12,8,28,20,15,22,19。
2.若数据元素序列11,12,13,7,8,9,23,4,5是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是()。
-
冒泡排序
-
插入排序
-
选择排序
-
二路归并排序
解析:
解答本题需要对各种排序算法的特点极为清楚。对于冒泡排序和选择排序,每一趟都能确定一个元素的最终位置,而题目中,前2个元素和后2个元素均不是最小或最大的2个元素并按序排列。选项D中的2路归并排序,第一趟排序结束都可以得到若干个有序子序列,而此时的序列中并没有两两元素有序排列。插入排序在每趟排序后能确定前面的若干元素是有序的,而此时第二趟排序后,序列的前三个元素是有序的,符合其特征。
3.采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是(D)
-
递归次数与初始数据的排列次序无关
-
每次划分后,先处理较长的分区可以减少递归次数
-
每次划分后,先处理较短的分区可以减少递归次数
-
递归次数与每次划分后得到的分区处理顺序无关
解析:答案选D
递归次数,取决于递归树,而递归树取决于轴枢的选择。树越平衡,递归次数越少。
而对分区的长短处理顺序,影响的是递归时对栈的使用内存,而不是递归次数
A递归次数和数据排列有关 若有序,这次数为0(N)。理论上最少的次数为0(logN)
BC 每次划分应该先处理较短的分许,只是减少递归占用的内存空间,并不能减少次数
一次划分之后