数据结构——排序の选择题整理

排序的基本概念

1、下列排序方法中,不属于内部排序方法的是()
A、插入排序
B、选择排序
C、拓扑排序
D、冒泡排序

解析:选C
拓扑排序是选择没有入度的结点依次入队。是用于寻找关键路径的,和排序本质上来说无关。因为此处的内部排序是能按升序或降序排列,而拓扑排序排完一般都是无序的。


1、对初始数据序列{8,3,9,11,2,1,4,7,5,10,6}进行希尔排序。若第一趟排序结果为(1,3,7,5,2,6,4,9,11,10,8),第二趟排序结果为(1,2,6,4,3,7,5,8,11,10,9),则两趟排序采用的增量(间隔)依次是()
A、3,1
B、3,2
C、5,2
D、5,3

解析:选D
第一趟1,8,6进行了排序,间隔是5
第二趟1,4,5,10进行了排序,间隔是3


交换排序

1、对数据序列{8,9,10,4,5,6,20,1,2}采用冒泡排序(从后向前次序进行,要求升序),需要进行的趟数至少是()
A、3
B、4
C、5
D、8

解析:选C
第一趟:1,8,9,10,4,5,6,20,2
第二趟:1,2,8,9,10,4,5,6,20
第三趟:1,2,4,8,9,10,5,6,20
第四趟:1,2,4,5,8,9,10,6,20
第五趟:1,2,4,5,6,8,9,10,20

2、对下列关键字序列用快排进行排序时,速度最快的情形是(),速度最慢的情形是()
A、{21,25,5,17,9,23,30}
B、{25,23,30,17,21,5,9}
C、{21,9,17,30,25,23,5}
D、{5,9,17,21,23,25,30}

解析:选A、D
对于快排,每次能把分成的两个区域尽可能均分速度会更快,序列越有序,速度越慢。
对于A
以21为枢轴,第一次结束:(9,17,5,21,25,23,30)
以9为枢轴,21左边排序;以25为枢轴,21右边排序:(5,9,17,21,23,25,30)。
对于B
以25为枢轴,第一次结束:(9,23,5,17,21,25,30)
以9为枢轴,25左边排序(右边只有一个数,不用再排序):(5,9,23,17,21,25,30)
以23为枢轴,9右边排序(左边只有一个书,不用再排序):(5,9,21,17,23,25,30)
以21为枢轴,23左边排序(右边已经排好):(5,9,17,21,23,25,30)
对于C
以21为枢轴,第一次结束:(5,9,17,21,25,23,30)
以5为枢轴,21左边进行排序,以25为枢轴,21右边进行排序:(5,9,17,21,23,25,30)
以9为枢轴,5右边进行排序:(5,9,17,21,23,25,30)
对于D
以5为枢轴,第一次排序:(5,9,17,21,23,25,30)
以9为枢轴:(5,9,17,21,23,25,30)
以17为枢轴:(5,9,17,21,23,25,30)
以21为枢轴:(5,9,17,21,23,25,30)
以23为枢轴:(5,9,17,21,23,25,30)
以25为枢轴:(5,9,17,21,23,25,30)
以30为枢轴:(5,9,17,21,23,25,30)

3、对n个关键字进行快速排列,最大递归深度为(),最小递归深度为()
A、1
B、n
C、log2n
D、nlog2n

解析:选B、C
快排过程可以转化为一棵递归树,最大递归深度就是速度最慢的时候,就是原本序列已经排好顺序了,此时递归树变成一棵单侧树,高度为n。最小递归深度就是速度最快的时候,即每次尽可能将分成的两个数列数量相等,因此递归树最好是完全二叉树,高度为log2n。


选择排序

1、设线性表中每个元素有两个数据项k1和k2,现对线性表按以下规则进行排序:先看数据项k1,k1值小的元素在前,大的元素在后;在k1值相同的情况下,再看k2,k2值小的在前,大的元素在后。满足这种要求的排序方法是()
A、先按k1进行直接插入排序,再按k2进行简单选择排序
B、先按k2进行直接插入排序,再按k1进行简单选择排序
C、先按k1进行简单选择排序,再按k2进行直接插入排序
D、先按k2进行简单选择排序,再按k1进行直接插入排序

解析:选D
因为k1的优先级高于k2,所以要后对k1进行排队,否则就会打乱按k1的排列顺序。
且为了满足“在k1值相同的情况下,再看k2”的条件,因此在对k1进行排序的时候,需要选择稳定的算法,否则会出现k1值相同的情况下,k2值大的在前的问题。直接插入排序是稳定算法,简单选择排序是不稳定算法。

2、有一组数据(15,9,7,8,20,-1,7,4),用堆排序的筛选方法建立的初始小根堆为()
A、-1,4,8,9,20,7,15,7
B、-1,7,15,7,4,8,20,9
C、-1,4,7,8,20,15,7,9
D、A、B、C均不对

解析:选C
自下至上,自左至右,将小的挪到上面去。
在这里插入图片描述

3、向具有n个结点的堆中插入一个新元素的时间复杂度为(),删除一个元素的时间复杂度为()
A、O(1)
B、O(n)
C、O(log2n)
D、O(nlog2n)

解析:选C、C
在插入或删除一个元素后,需要重新调整堆,此时最多需要比较树的高度-1次,h=⌊ log2n ⌋+1,即最多比较⌊ log2n ⌋次,因此时间复杂度为O( log2n )

4、已知小根堆为8,15,10,21,34,16,12,删除关键字8之后需要重建堆,在此过程中,关键字之间比较次数是()
A、1
B、2
C、3
D、4

解析:选C
在这里插入图片描述

5、在将序列(6,1,5,9,8,4,7)建成大根堆时,正确的序列变化过程是()
A、6,1,7,9,8,4,5 -> 6,9,7,1,8,4,5 -> 9,6,7,1,8,4,5 -> 9,8,7,1,6,4,5
B、6,9,5,1,8,4,7 -> 6,9,7,1,8,4,5 -> 9,6,7,1,8,4,5 -> 9,8,7,1,6,4,5
C、6,9,5,1,8,4,7 -> 9,6,5,1,8,4,7 -> 9,6,7,1,8,4,5 -> 9,8,7,1,6,4,5
D、6,1,7,9,8,4,5 -> 7,1,6,9,8,4,5 -> 7,9,6,1,8,4,5 -> 9,7,6,1,8,4,5 -> 9,8,6,1,7,4,5

解析:选A
在这里插入图片描述


归并排序和基数排序

1、在下列排序算法中,平均情况下空间复杂度为O(n)的是();最坏情况下空间复杂度为O(n)的是()
a.希尔排序
b.堆排序
c.冒泡排序
d.归并排序
e.快速排序
f.基数排序
A、a、d、f
B、b、e
C、d、f
D、d

解析:选D、C
归并排序在平均情况下空间复杂度为O(n),最坏情况下空间复杂度也为O(n)。
快排在平均情况下空间复杂度为O(n),最坏情况下空间复杂度为O(log2n)

2、设数组S[ ]={93,946,372,9,146,151,301,485,236,327,43,892},采用最低位优先(LSD)基数排序将S排列成升序序列。第一趟分配、收集后,元素372之前、之后紧邻的元素分别是()
A、43,892
B、236,301
C、301,892
D、485,301

解析:选C
如下图:第一趟分配收集后的序列为:151,301,372,892,93,43,485,946,146,236,327,9在这里插入图片描述


各种内部排序算法的比较及应用

1、设被排序列的结点序列共有N个结点,在该序列中的结点已十分接近有序的情况下,用直接插入排序、归并排序和快速排序对其进行排序,这些算法的时间复杂度应为()
A、O(N)、O(N)、O(N)
B、O(N)、O(Nlog2N)、O(Nlog2N)
C、O(N)、O(Nlog2N)、O(N2)
D、O(N2)、O(Nlog2N)、O(N2)

解析:选C
对于快速排序来说,被排序列越有序,所需时间越久。对于其他的排序,则是越有序越好,所需时间越短。
在这里插入图片描述

2、一般情况下,以下查找效率最低的数据结构是()
A、有序顺序表
B、二叉排序树
C、堆
D、平衡二叉树

解析:选C
堆是用来排序的,在查找时效率没有其他的数据结构高。

3、下列排序方法中,若将顺序存储更换为链式存储,则算法的时间效率会降低的是()
a.插入排序
b.选择排序
c.起泡排序
d.希尔排序
e.堆排序
A、a、b
B、b、c
C、c、d
D、d、e

解析:选D
希尔排序和堆排序都用到了顺序存储的随机存取的特性,更换为链式存储以后就需要每次都从头寻找,大大降低了效率。


外部排序

1、置换-选择排序的作用是()
A、用于生成外部排序的初始归并段
B、完成将一个磁盘文件排序成有序文件的有效的外部排序算法
C、生成的初始归并段的长度是内存工作区的2倍
D、对外部排序中输入/输出的并行处理

解析:选A
置换-选择排序是外部排序中生成初始归并段的方法。它生成的归并段的长度是不确定的,平均长度是传统等长归并段的2倍,从而使得初始归并段数量减少到原来的1/2.但是,置换-选择排序并不是一个完整的排序算法,因此不能将一个磁盘文件排序成有序文件。

2、在做m路平衡归并排序的过程中,为实现输入/内部归并/输出的并行处理,需要设置()个输入缓冲区和()个输出缓冲区
A、2
B、m
C、2m-1
D、2m

解析:选D、A
如果设置m个输入缓冲区,那么只能实现串行操作,而题目中要求的是并行操作,因此需要2m个输入缓冲区。

3、已知三叉树T中6个叶结点的权分别是2,3,4,5,6,7,T的带权(外部)路径长度最小是()
A、27
B、46
C、54
D、56

解析:选B
(n0-1)%(3-1) = (6-1)%(2) =1 != 0,因此需要添加结点,m-u-1=3-1-1,因此需要添加1个结点。添加的结点权重为0。
路径长度为:(2+3)*3+(4+5)*2+(6+7)*1=46
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值