第七章 - 排序

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 每次划分应该先处理较短的分许,只是减少递归占用的内存空间,并不能减少次数

一次划分之后

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值