先了解排序的类型:
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