数据结构习题精编:排序一、选择题1.下列排序方法中,稳定的排序方法是A.堆排序B.希尔排序C.快速排序D.直接插入排序2.下列排序方法中,不稳定的排序方法是A.冒泡排序B.归并排序C.直接插入排序D.简单选择排序3.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是A.堆排序B.归并排序C.快速排序D.直接插入排序4.当待排序序列中记录数较少或基本有序时,最适合的排序方法为A.堆排序B.归并排序C.快速排序D.直接插入排序5.下列排序方法中,不能保证每趟排序后至少能将一个元素放到其最终的位置上的是A.堆排序B.希尔排序C.冒泡排序D.快速排序6.下列排序方法中,最好与最坏时间复杂度不相同的排序方法是A.堆排序B.冒泡排序C.归并排序D.直接选择排序7.下列排序方法中,排序过程中关键字的比较次数与记录初始排列无关的是A.堆排序B.快速排序C.简单选择排序D.直接插入排序8.堆排序平均执行的时间复杂度和需要附加的存储空间复杂度分别是A.O(nlog2n)和O(1)B.O(n2)和O(1)C.O(nlog2n)和O(n)D.O(n2)和O(n)9.直接插入排序在最好情况下的时间复杂度为A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)10.如果在排序过程中,每次均将一个待排序的记录按关键字大小加入到前面已经有序的子表中的适当位置,则该排序方法称为A.堆排序B.归并排序C.插入排序D.冒泡排序11.如果在排序过程中,每次从未排序的记录中挑出最小(或最大)关键字的记录,加入到已排序记录的末尾,该排序方法是A.堆排序B.冒泡排序C.直接插入排序D.简单选择排序12.在采用下列某种排序方法进行排序时,出现这样一个情况:在最后一趟开始之前,所有元素都不在其最终的位置上。
该排序方法是A.堆排序B.冒泡排序C.快速排序D.直接插入排序13.在待排序数据已有序时,花费时间反而最多的排序方法是A.堆排序B.冒泡排序C.快速排序D.希尔排序14.设某数据表中有10000个无序的元素,如果仅要求选出其中最大的10个元素,最好采用的排序方法为A.堆排序B.快速排序C.冒泡排序D.直接选择排序15.下列排序方法中,需要辅助存储空间为O(n)的是A.堆排序B.希尔排序C.快速排序D.归并排序16.借助于“比较”进行排序的算法在最坏情况下能达到的最好时间复杂度为A.O(log2n)B.O(n)C.O(nlog2n)D.O(n2)17.用直接插入排序方法对下面四个序列进行非递减有序排序,元素比较次数最少的是A.21,32,46,40,80,69,90,94 B.32,40,21,46,69,94,90,80C.90,69,80,46,21,32,94,40 D.94,32,40,90,80,46,21,6918.对关键字序列(56,23,78,92,88,67,19,34)进行增量为3的一趟希尔排序的结果为A.(19,23,34,56,67,78,88,92) B.(19,23,56,34,78,67,88,92) C.(19,23,67,56,34,78,92,88) D.(23,56,78,66,88,92,19,34) 19.对序列{15,9,7,8,20,1,4} 用希尔排序方法排序,经一趟后序列变为{15,l,4,8,20,9,7},则该次采用的增量是A.l B.2 C.3 D.420.已知10个数据元素为(54,28,16,34,73,62,95,60,26,43),对该序列按从小到大排序,经过一趟冒泡排序后的序列为A.16,28,34,54,62,60,73,26,43,95B.16,28,34,54,73,62,60,26,43,95C.28,16,34,54,62,60,73,26,43,95D.28,16,34,54,62,73,60,26,43,9521.设有一组初始关键字值序列为(49,81,55,36,44,88),则利用快速排序的方法,以第一个关键字值为基准得到的一次划分为A.36,44,49,55,81,88 B.44,36,49,55,81,88C.44,36,49,81,55,88 D.44,36,49,55,88,8122.对下列关键字序列用快速排序法进行排序时,速度最快的情形是A.{1,2,3,4,5,6,7} B.{4,2,3,7,6,5,1}C.{4,6,1,3,2,5,7} D.{6,5,7,3,4,1,2}23.采用递归方式对顺序表进行快速排序,下列关于递归次数的叙述中,正确的是A.递归次数与初始数据的排列次数无关B.递归次数与每次划分后得到的分区处理顺序无关C.每次划分后,先处理较长的分区可以减少递归次数D.每次划分后,先处理较短的分区可以减少递归次数24.为实现快速排序算法,待排序序列宜采用的存储方式是A.顺序存储B.链式存储C.散列存储D.索引存储25.在对n个关键字进行直接选择排序的过程中,每一趟都要从无序区选出最小关键字元素,则在进行第i趟排序之前,无序区中关键字元素的个数为A.i B.i+1 C.n-i D.n-i+126.一组记录的关键字值为(46,74,18,53,14,20,40,38,86,65),利用堆排序的方法建立的初始堆为A.(14,18,20,38,40,46,53,65,74,86)B.(14,18,38,46,65,40,20,53,86,74)C.(14,38,18,46,65,20,40,53,86,74)D.(14,86,20,38,40,46,53,65,74,18)27.下列关键码序列中,属于堆的是A.(15,30,22,93,52,71)B.(15,52,22,93,30,71)C.(15,71,30,22,93,52)D.(93,30,52,22,15,71)28.已知序列25、13、10、12、9是大根堆,在序列尾部插入新元素,将其再调整为大根堆,调整过程中元素之间进行的比较次数是A.1 B.2 C.4 D.5 29.已知关键字序列5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字3,调整后得到的小根堆是A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,1930.对记录序列(314,298,508,123,486,145)依次按个位和十位进行两趟基数排序之后所得结果为A.123,145,298,314,486,508 B.298,123,508,486,145,314C.486,314,123,145,508,298 D.508,314,123,145,486,298 31.对数据序列(10,9,6,8,20,1,3)进行排序,第一趟排序后的序列变为(3,9,1,8,20,6,10),则采用的排序方法是A.冒泡排序B.希尔排序C.快速排序D.简单选择排序32.对序列(22,86,19,49,12,30,65,35,18)进行一趟排序后得到的结果为(18,12,19,22,49,30,65,35,86),则采用的排序方法是A.冒泡排序B.快速排序C.直接插入排序D.简单选择排序33.若数据元素序列11,12,13,7,8,9,23,4,5 是采用下列排序方法之一得到的第二趟排序后的结果,则该排序方法只能是A.冒泡排序B.直接插入排序C.简单选择排序D.二路归并排序34.若数据元素序列2,1,4,9,8,10,6,20是采用下列排序方法之一得到的第二趟排序后的结果,则该排序方法只能是A.快速排序B.冒泡排序C.直接插入排序D.简单选择排序35.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:第一趟:2,12,16,5,10,88第二趟:2,12,5,10,16,88第三趟:2,5,10,12,16,88则采用的排序方法可能是A.冒泡排序B.希尔排序C.归并排序D.基数排序二、填空题1.排序通常可分为内部排序和外部排序,其中内部排序是指排序的整个过程中,数据全部存放在计算机的__________中。
2.在插入和选择排序中,若初始数据基本正序,则选用________;若初始数据基本反序,则选用________。
3.在排序方法中,依次将每个记录插入到一个有序的子序列中去,即在第i(i≥1)遍整理时,r1、r2、…、r i-1已经是排好顺序的子序列,取出第i个元素r i,在已排好序的子序列里为r i找到一个合适的位置,并把它插到该位置上。
这种排序方法被称为___________。
4.在待排序的n个记录中任取一个记录,以该记录的键值作为标准,将所有记录分为两组,使得第一组中各记录的键值均小于或等于该键值,第二组中的各记录的键值均大于该键值;然后将该记录排在两组中间。
再对所分成的两组分别使用上述方法,直到所有记录都排在适当位置为止。
这种排序方法称为________________。
5.不受待排序初始序列的影响,时间复杂度为O(n2)的排序算法是___________,在排序算法的最后一趟开始之前,所有元素都可能不在其最终位置上的排序算法是______________。
6.若希望只进行8趟排序便能在4800个元素中找出其中值最小的8个元素,并且要求排序过程中所进行的关键字比较次数尽可能少,则应该选用________________排序方法。
7.设待排序记录的个数为n,则快速排序的最小递归深度是___________,最大递归深度是________________。
8.对n个记录的表r[1..n]进行简单选择排序,所需进行的关键字间的比较次数为_______。
9.对于7个元素的集合{1,2,3,4,5,6,7}进行快速排序,具有最小比较和交换次数的初始排列次序为________________。
10.若对关键字序列(43,2,80,48,26,57,15,73,21,24,66)进行一趟增量为3的希尔排序,则得到的结果序列为___________________。
11.设有关键字序列(43,2,80,48,26,57,15,73,21,24,66),利用快速排序的方法,以第一个记录关键字43为基准得到的一次划分结果为_____________________。
12.利用筛选法将关键字序列(43,2,80,48,26,57,15,73,21,24,66)建成的大根堆为________________________________。
13.设有一组记录关键字(54,38,96,23,15,72,60,45,83),分别采用不同的排序方法进行非递减有序排序,试写出第1趟排序结束后的结果序列。