数据结构选择题——内部排序

先了解排序的类型:

1、已知关键字序列{5,12,8,19,20,28,35,22}是小根堆,插入关键字3,调整后得到的小根堆是(  )
A、3,5,12,8,19,20,28,35,22
B、3,5,8,12,20,28,35,22,19
C、3,12,5,19,20,28,8,35,22
D、3,5,8,12,19,35,22,28,20

答案:B

小根堆序列是一个完全二叉树,其中双亲结点小于子结点,每一个子树都满足此规律

解题:

2、以下不属于内排序方法的是 (  )
A、起泡排序
B、拓扑排序
C、基数排序
D、快速排序

答案:B

3、排序算法的稳定性是指( )
A、经过排序后,能使指相同的数据保持原顺序中的相对位置不变。
B、经过排序后,能使指相同的数据保持原顺序中的绝对位置不变。
C、经过排序后,数据序列的存放数组的结构保持不变。
D、经过排序后,数据序列的存放数组的结构随之变化。

答案:A

4、如果待排序元素存储在数据表中,排序后元素(  ),如果待排序元素存储在静态链表数组中,排序后元素(  )
A、一定移动,一定不移动
B、可能不移动,可能移动
C、可能移动,一定不移动
D、可能移动,可能不移动

答案:C

5、对序列{49,38,65,97,76,13,47,50}采用直接插入排序,假设前6个元素已经排好序,如{13,38,49,65,76,93}。现在要把第7个元素47插入到已排序序列中,为寻找插入的合适位置,需要进行( )次元素间的比较。
A、3
B、4
C、5
D、6

答案:C

从序列尾部开始比较,一直到比它小的数,共比较93,76,65,49,38,共五次

6、对有n个元素的任意序列做直接插入排序,排序趟数是(  )
A、n-1
B、n
C、n+1
D、log2(n)

答案:A

第一个插入时不用排序,因为是趟数,因此剩下每个元素比一趟

7、用直接插入排序对以下序列做升序排列,元素移动次数最少的是( )
A、{94,32,40,90,80,46,21,69}
B、{32,40,21,46,69,94,90,80}
C、{21,32,40,46,69,80,94,90}
D、{90,69,80,46,21,32,94,40}

答案:C

选择最接近升序的那个

8、有一种排序方法,如果最小的元素位于待排序序列的最后,则在最后一趟排序开始之前,所有元素都不在其最终位置上,这种排序方法是(  )
A、起泡排序
B、直接插入排序
C、快速排序
D、简单选择排序

答案:B

最后一趟开始后,因为最后一个元素是最小的,因此每个元素都要向后移动一位

9、一个元素序列的关键字为{46,79,56,38,40,84},采用快速排序(以第一个元素为基准)得到的第一次划分的结果为(  )
A、{38,46,79,56,40,84}
B、{38,79,56,46,40,84}
C、{40,38,46,56,79,84}
D、{38,46,56,79,40,84}

答案:C

快速排序是每一趟选择一个支点(轴枢),通常选择独立部分的第一个关键字,将其分割为两部分分别排序。第一趟的支点是第一个关键字46,小于46的全放在左边,大于的放在右边,结果显而易见

10、下列选项中,不可能是快速排序第2趟排序结果的是( )
A、{2,3,5,4,6,7,9}
B、{2,7,5,6,4,3,9}
C、{3,2,5,4,7,6,9}
D、{4,2,3,5,7,6,9}

答案:C

经过2趟快速排序,结果能够呈现一定规律性,而C选项完全无序,容易选出。
11、对以下关键字序列用快速排序进行排序,(  )最慢。
A、{19,23,3,15,7,21,28}
B、{23,21,28,15,19,3,7}
C、{19,7,15,28,23,21,3}
D、{3,7,15,19,21,23,38}

答案:D

快速排序,由于选择每组第一个元素作为支点,因此第一个元素越接近中位数,排序越快。越接近两端越慢。

12、对数据元素序列{49,72,68,13,38,50,97,27}进行排序,前3趟排序结束时的结果依次为:
第一趟:{13,72,68,49,38,50,97,27}
第二趟:{13,27,68,49,38,50,97,72}
第三趟:{13,27,38,49,68,50,97,72}
该排序采用的方法是(  )
A、直接插入排序
B、简单选择排序
C、起泡排序
D、快速排序

答案:B

排除法,A,要经过一个插入过程,而题中每趟中都含所有元素

C冒泡法第一趟472就应与68换位

D第一个元素49作为支点,小于49的应放在它左边

13、对n个元素的待排序的元素序列使用递归的快速排序算法时,为了保证排序过程的时间复杂度不超过O(nlog2(n)),必须做到(  )
A、每次序列的划分应在线性时间内完成
B、每次划分的两个子序列长度接近
C、每次归并在线性时间内完成
D、以上全是

答案:B

B、每次划分得到的两个子序列长度接近,可近似认为每次递归都将完整处理一半,复杂度O(log2(n)),对于n个元素:O(n)因此得到O(nlog2(n))

14、查找效率最低的数据结构是( )
A、AVL树
B、大根堆
C、二叉排序树
D、有序顺序表

答案:B

有序顺序表可通过折半查找加快效率,剩余三种结构较为接近,但通过查找章节的学习,我们知道二叉排序树是较快的查找方式,而AVL比普通的二叉排序树更快,因此效率较低的是相对其他三个结构更加无序的大根堆。

15、在二路归并排序的过程中,需要执行(  )趟二路归并
A、O(long2(n))
B、O(n)
C、O(nlong2(n))
D、O(n^2)

答案:A

二路归并:将一维数组中前后相邻的两个有序序列合并为一个有序序列,可得每次归并有序序列数量将减半

16、如果待排元素个数n很大,例如超过100000,关键字的基数固定且位数不大,则基数排序的时间复杂度接近(  )
A、O(1)
B、O(n)
C、O(nlog2(n))
D、O(n^2)

答案:B

看图对比

17、如果需要在O(nlog2(n))的时间内完成对元素数组的排序,且要求算法是稳定的,则可以选择的排序方法是( )
A、堆排序
B、归并排序
C、快速排序
D、希尔排序

答案:B

由16题图可得堆排序和归并排序满足此时间复杂度,稳定性来说,堆排序有元素交换的过程,是一种不稳定的排序算法

18、如果将所有中国人按照生日(不考虑年份,只考虑月,日)来排序,那么下列排序算法中排序速度最快的是( )
A、归并排序
B、希尔排序
C、快速排序
D、基数排序

答案:D

较大数据使用基数排序

19、适合并行处理的排序算法是( )
A、折半插入排序
B、起泡排序
C、快速排序
D、希尔排序

答案:C

在以上几种方法中,只有快速排序是将序列分成几个部分并行的

20、就排序算法所用的辅助空间代价而言,堆排序,快速排序和归并排序的关系为(  )
A、堆排序<快速排序<归并排序
B、堆排序<归并排序<快速排序
C、快速排序<堆排序<归并排序
D、归并排序<快速排序<堆排序

答案:A

21、若对27个元素只进行3趟多路归并排序,则选取的归并路数为(  )
A、2
B、3
C、4
D、5

答案:B

3^3=27

22、堆排序是一种(  )排序,它的一个基本问题是如何建堆。
A、插入
B、选择
C、交换
D、归并

答案:B

堆排序的基本步骤如下:
1构建最大堆(或最小堆):将待排序的序列构建成一个最大堆(或最小堆)。
2交换堆顶元素和最后一个元素:将堆顶元素与堆中最后一个元素交换位置,然后将堆的大小减1。
3调整堆:对交换后的堆进行调整,使其满足堆的性质。
4重复步骤2和步骤3,直到堆的大小为1。

堆排序是一种选择排序(容易被交换误导)

23、一组元素的关键字序列为{45,78,55,37,49,83}对其进行堆排序,所建的初始堆为(  )
A、78,45,55,37,49,83
B、83,78,55,45,49,37
C、83,55,78,49,45,37
D、83,78,55,37,49,45

答案:D

先按顺序画出完全二叉树(从左到右,从上到下按顺序写出即可),后按照根比子结点大的原则交换各不满足条件的结点,最后得到序列即可

24、设待排序元素存储于数组A[n]中,执行折半插入排序时,为插入第i个元素(1<=i<=n-1),需要做( )次关键字的比较
A、i-1
B、i
C、⌊log2(n)⌋
D、⌈log2(i+1)⌉

答案:D

25、设待排序序列有n个元素,采用折半插入排序进行排序,在最坏情况下的时间代价是(  )
A、O(log2(n))
B、O(n)
C、O(nlog2(n))
D、O(n^2)

答案:D

26、对一个待排序序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是(  )
A、排序的总趟数
B、元素的移动次数
C、使用辅助空间的数量
D、元素之间的比较次数

答案:D

27、希尔排序的组内排序采用的是( )
A、直接插入排序
B、折半插入排序
C、快速排序
D、归并排序

答案:A

28、设待排序序列有n个元素,要将它们进行升序排序,当待排序序列的初始排列是( )时,执行起泡排序要进行n-1趟排序。
A、按值的大小从小到大排列
B、按值的大小从大从小排序
C、最小值的元素处在序列的最后
D、序列中元素的排列次序任意

答案:B

所需升序,所给降序,需要比较最大趟数n-1

29、采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中正确的是( )
A、递归次数于初始数据的排列次序无关
B、每次划分后,先处理较长的分区可以减少递归的次数
C、每次划分后,先处理较短的分区可以减少递归次数
D、递归次数与每次划分后得到的分区的处理顺序无关

答案:D

划分的支点通常选择分组中第一个元素,因此与初始数据序列有关

30、在以下排序方法中,排序码比较次数与元素的初始排列无关的是(  )。
A、起泡排序
B、直接插入排序
C、简单选择排序
D、快速排序

答案:C

选择排序每比较一趟得出一个位置,因此无论何种序列,都要比较一趟才能得到下一个位置的一个元素

31、对具有n个元素的初始大根堆执行堆排序,排序的趟数为( )
A、n
B、n-1
C、⌊log2(n)⌋
D、⌊nlog2(n)⌋

答案:B

每趟将一个元素与路径上的元素对比换位,执行n-1次完成排序

32、以下排序算法中不稳定的是(  )
A、起泡排序
B、直接插入排序
C、基数排序
D、快速排序

答案:D

33、有些算法在每趟排序过程中都会有一个元素被放置在其最终位置上,下列算法中不会出现此情况的是( )
A、希尔排序
B、堆排序
C、起泡排序
D、快速排序

答案:A

BCD三个选项中的排序方法都是在一个序列中作操作,总有一个元素放在最后,而希尔排序是基于直接插入排序的排序方法。

34、用某种排序方法对数据序列{24,88,21,48,15,27,69,35,20}进行排列时,元素序列变化情况如下所示:
第一趟:20,15,21,24,48,27,69,35,88
第二趟:15,20,21,24,35,27,48,69,88
第三趟:15,20,21,24,27,35,48,69,88
则采用的方法是(  )
A、快速排序
B、选择排序
C、希尔排序
D、归并排序

答案:A

基于快速排序思想验证

35、若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是(  )
A、起泡排序
B、插入排序
C、选择排序
D、归并排序

答案:B

36、为实现快速排序,待排序列宜采用的存储方式是(  )
A、顺序存储
B、散列存储
C、链式存储
D、索引存储

答案:A

37、下列排序算法中占用辅助空间最多的是( )
A、归并排序
B、快速排序
C、堆排序
D、希尔排序

答案:A

见20题图

38、如果只想得到1024个随机排列的元素序列中的前4个最小元素,那么用(  )方法最快。
A、直接插入排序
B、快速排序
C、希尔排序
D、堆排序

答案:B

39、当待排序元素序列的元素个数较多,元素排序码的初始排列可能出现基本有序或基本逆序的情形,且对排序结果的稳定性不做要求时,宜采用(  )
A、希尔排序
B、堆排序
C、快速排序
D、简单选择排序

答案:B

40、当待排序元素序列的元素个数较少,元素排序码的初始排列基本有序,且要求排序结果稳定时,宜采用(  )
A、简单选择排序
B、快速排序
C、折半插入排序
D、直接插入排序

答案:D

  • 18
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

D D D D C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值