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


    排序的基本概念

    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
    在这里插入图片描述

  • 相关阅读:
    Mac运行Docker报错
    第二篇 渲染框架2.x
    文献解读:有监督的机器学习在心理学上的应用
    利用大模型MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7实现零样本分类
    秋秋发生大规模账号泄露?二十行代码一键采集
    相等全等运算符
    【YOLOv5/v7改进系列】改进池化层为YOLOv9的SPPELAN
    sql注入
    3Dexcite deltgen 2022x 新功能
    js中.sort()函数的用法
  • 原文地址:https://blog.csdn.net/qq_45741986/article/details/125920002