排序习题Word下载.docx
《排序习题Word下载.docx》由会员分享,可在线阅读,更多相关《排序习题Word下载.docx(17页珍藏版)》请在冰豆网上搜索。
201521254727683584
152021253527476884
152021252735476884
则所采用的排序方法是( )
A)选择排序 B)希尔排序 C)归并排序 D)快速排序
4.下面给出的四种排序法中,( )排序是不稳定排序法。
B)冒泡
C)二路归并
D)堆
5.快速排序方法在( )情况下最不利于发挥其长处。
A)要排序的数据量太大
B)要排序的数据中含有多个相同值
C)要排序的数据已基本有序
D)要排序的数据个数为奇数
6.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为( )
A)38,40,46,56,79,84
B)40,38,46,79,56,84
C)40,38,46,56,79,84
D)40,38,46,84,56,79
7.对记录的关键码{50,26,38,80,70,90,8,30,40,20}进行排序,各趟排序结束时的结果为:
50,26,38,80,70,90,8,30,40,20
50,8,30,40,20,90,26,38,80,70
26,8,30,40,20,80,50,38,90,70
8,20,26,30,38,40,50,70,80,90
其使用的排序方法是( )
B)基数排序
C)希尔排序
D)归并排序
8.在文件“局部有序”或文件长度较小的情况下,最佳内部排序方法是( )
A)直接插入排序
B)冒泡排序
C)简单选择排序
9.在下列算法中,( )算法可能出现下列情况:
在最后一趟开始之前,所有的元素都不在其最终的位置上。
A)堆排序
C)插入排序
D)快速排序
【答案】C
【解析】在插入排序中,如果待排序列中的最后一个元素其关键字值为最小,则在最后一趟开始之前,前n-1个排好序的元素都不在其最终位置上,与排好序后的位置相差一个位置。
因此,选C。
10.设有5000个无序的元素,希望用最快速度挑选出其中前10个最大的元素,在以下的排序方法中,采用( )方法最好
B)堆排序
C)基数排序
【解析】用堆排序最好,因为堆排序不需要等整个排序结束就可挑出前10个最大元素,而快速排序和基数排序都需等待整个排序结束才能知道前10个最大元素。
11.对给出的一组关键字{14,5,19,20,11,19}。
若按关键字非递减排序,第一趟排序结果为{14,5,19,20,11,19},问采用的排序算法是( )
A)简单选择排序
B)快速排序
D)二路归并排序
12.以下序列不是堆的是( )
A)100,85,98,77,80,60,82,40,20,10,66
B)100,98,85,82,80,77,66,60,40,20,10
C)10,20,40,60,66,77,80,82,85,98,100
D)100,85,40,77,80,60,66,98,82,10,20
13.下面排序方法中,关键字比较次数与记录的初始排列无关的是( )
A)希尔排序
C)直接插入排序
D)直接选择排序
【解析】如果初始排列基本有序,则对希尔排序来说,前几趟的插入工作大为减少。
冒泡排序和直接插入排序都与初始排序序列有关,只有直接选择排序与初始序列无关.故选D。
14.一组记录的关键字为{45,80,55,40,42,85},则利用堆排序的方法建立的初始堆为( )
A)80,45,50,40,42,85
B)85,80,55,40,42,45
C)85,80,55,45,42,40
D)85,55,80,42,45,40
15.一组记录的关键字为{25,50,15,35,80,85,20,40,36,70},其中含有5个长度为2的有序表,用归并排序方法对该序列进行一趟归并后的结果为( )
A)15,25,35,50,20,40,80,85,36,70
B)15,25,35,50,80,20,85,40,70,36
C)15,25,50,35,80,85,20,36,40,70
D)15,25,35,50,80,20,36,40,70,85
16.n个元素进行冒泡排序的过程中,最好情况下的时间复杂度为( )
A)O
(1)
B)O(log2n)
C)O(n2)
D)O(n)
17.n个元素进行快速排序的过程中,第一次划分最多需要移动( )次元素(包括开始将基准元素移到临时变量的那一次)。
A)n/2
B)n-1
C)n
D)n+l
18.下述几种排序方法中,要求内存量最大的是( )
A)插入排序
B)选择排序
C)快速排序
19.下面排序方法中,时间复杂度不是O(n2)的是( )
B)二路归并排序
C)冒泡排序
【解析】直接插入排序、冒泡排序和直接选择排序的时间复杂度为O(n2),而二路归并排序的时间复杂度为O(nlog2n),故选B。
20.对下列4个序列用快速排序方法进行排序,以序列的第1个元素为基准进行划分。
在第1趟划分过程中,元素移动次数最多的是序列( )
A)70,75,82,90,23,16,10,68
B)70,75,68,23,10,16,90,82
C)82,75,70,16,10,90,68,23
D)23,10,16,70,82,75,68,90
9.2 填空题
1.当数据量特别大需借助外部存储器对数据进行排序,则这种排序称为_____________。
2.在堆排序、快速排序和归并排序中,若从节省存储空间考虑,则应首先选取_____________方法,其次选取_____________方法;
若只从排序结果的稳定性考虑,则应先择_____________方法;
若只从平均情况下排序的速度来考虑,则选择_____________方法;
若只从最坏情况下排序最快并且要节省内存考虑,则应选取_____________方法。
3.对n个元素的序列进行冒泡排序,最少的比较次数是_____________,此时元素的排列情况为_____________,在_____________情况下比较次数最多,其比较次数为_____(4)_____。
【解析】初始元素正序时,第一趟比较n-1次,并无数据交换,则不再比较,故只比较n-1次。
若反序,则比较(n-1)+(n-2)+(n-3)+…..+2+1共n(n-1)/2次。
4.希尔排序是把记录按下标的一定增量分组,对每组记录进行直接插入排序,随着增量_____________,所分成的组包含的记录越来越多,当增量的值为_____________时,整个数组合为一组。
5.直接插入排序需借助的存储单元个数(空间复杂度)为_____________,最好情况下直接插入排序的算法时间复杂度为_____________,最坏情况下该算法的时间复杂度为_____________。
【答案】
(1)1
(2)O(n)
(3)O(n2)
6.对n个数据进行简单选择排序,所需进行的关键字间的比较次数为_____________,时间复杂度为_____________。
7.对于关键字序列(12,13,11,18,60,15,7,20,25,100),用筛选法建堆,必须从键值为_____________的关键字开始。
8.对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到已排序的有序表时,为寻找其插入位置需比较_____________次。
【解析】当把第7个记录60插入到有序表时,则前6个记录已经有序,此时记录60由后向前与有序表中的元素进行比较,直到遇到值小于60的记录为止,也即在有序表(15,23,38,54,72,96)中共需比较3次,因此填3。
9.若对顺序存储在A[l]~A[9]的记录(76,38,62,53,80,74,83,65,85)进行堆排序,已知除第一个元素76外,以其余元素为根的结点都已是堆,则对第一个元素进行筛运算时,它将最终被筛到A数组下标为_____________的位置上。
11.在时间复杂度为O(log2n)的排序方法中,_____________排序方法是稳定的;
在时间复杂度为O(n)的排序方法中,_____________排序方法是不稳定的。
(1)归并
(2)直接选择
12.设表中元素的初态是按键值递增的,若分别用堆排序、快速排序、冒泡排序和归并排序方法对其仍按递增顺序进行排序,则_____________最省时间,_____________最费时间。
【解析】若初始序列已经有序,则冒泡排序仅需一趟(比较n-1次);
而快速排序则需n-1趟,其时间复杂度升至O(n2)。
因此填:
冒泡排序,快速排序。
13.从一个无序序列建立一个堆的方法是:
首先将要排序的n个键值分放到一棵______________的各个结点中,然后从i=_____________的结点Ki开始,逐步把以Ki-1、Ki-2、…、K1为根的子树排成堆,直到以Kl为根的树排成堆,就完成了建堆的过程。
(1)完全二叉树
(2)n/2下取整。
9.3 判断题
1.对一个堆,按二叉树层次进行遍历可以得到一个有序序列(
)
2.内部排序就是整个排序过程完全在内存中进行的排序(
3.在数据基本有序时,直接插入排序法一定是性能最好的算法(
4.当数据序列已有序时,若采用冒泡排序法,数据比较n-1次(
5.内排序中的快速排序方法,在任何情况下均可得到最快的排序效果(
【答案】×
【解析】快速排序在待排序记录为随机分布时效果最好,基本有序时效果最差。
6.用希尔方法排序时,若关键字的初始排序杂乱无序,则排序效率就低(
【解析】希尔排序又称“缩小增量排序”,即每趟只对相同增量距离的关键字进行比较,这与关键字序列初始有序或无序无关。
9.4 应用题
1.什么是内排序?
什么是外排序?
什么排序方法是稳定的?
什么排序方法是不稳定的?
【答案】内排序是排序过程中参与排序的数据全部在内存中所做的排序,排序过程中无需进行内外存数据传送,决定排序方法时间性能的主要是数据排序码的比较次数和数据对象的移动次数。
外排序是在排序的过程中参与排序的数据太多,在内存中容纳不下,因此在排序过程中需要不断进行内外存的信息传送的排序。
假设在待排序的文件中存在两个或两个以上的记录具有相同的关键字,若采用某种排序方法后,使得这些具有相同关键字的记录在排序前后相对次序依然保持不变,则认为该排序方法是稳定的,否则就认为排序方法是不稳定的。
2