计算机学科专业基础综合数据结构分类模拟8Word文档格式.docx
《计算机学科专业基础综合数据结构分类模拟8Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机学科专业基础综合数据结构分类模拟8Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。
![计算机学科专业基础综合数据结构分类模拟8Word文档格式.docx](https://file1.bdocx.com/fileroot1/2023-2/6/c94c0f78-cbbe-4ca7-93d0-4ad0f09dfab5/c94c0f78-cbbe-4ca7-93d0-4ad0f09dfab51.gif)
A.快速排序
B.归并排序
C.基数排序
D.堆排序
[解答]基数排序是采用分配和收集实现的,不需要进行关键字的比较,而其他几种排序方法都是通过关键字的比较实现的。
6.直接插入排序在最好情况下的时间复杂度为______。
A.O(n)
B.O(nlogn)
C.O(logn)
D.O(n2)
[解答]直接插入排序最好的情况是:
待排序序列已经基本有序,其时间复杂度为O(n)。
7.设有1000个无序元素,希望用最快的速度挑选出前10个最大的元素,最好选用______法。
A.冒泡排序
C.堆排序
D.基数排序
[解答]堆排序可以实现按序输出元素,每次都输出剩余元素中的最大值,且时间复杂度为O(nlogn)。
8.下面四种排序算法中,不是稳定排序的是______。
D
[解答]不稳定的排序算法有希尔排序、简单选择排序、快速排序和堆排序。
9.就平均性能而言,目前最好的排序算法是______。
[解答]目前,平均性能最好的排序是快速排序。
如果输入序列是已经排好顺序的,则下列算法中______算法最快结束,______算法最慢结束。
10.
A.归并排序
B.直接插入排序
C.简单选择排序
D.快速排序
11.
[解答]当待排序元素的初始排列已经有序,直接插入排序只需n-1次排序码比较和0次数据移动,排序速度变得最快;
而快速排序则变成慢速排序,它的排序码比较次数达到n(n-1)/2,且因为是递归算法,还要利用一个栈,时间和空间开销较大。
12.堆是一种有用的数据结构,例如排序码序列______就是一个堆。
A.16,72,31,23,94,53
B.94,53,31,72,16,53
C.16,53,23,94,31,72
D.16,3l,23,94,53,72
[解答]堆是一个排序码序列(K0,K1,K2,…,Kn-1),它具有如下特性:
Ki≤K2i+1,Ki≤K2i+2,这里i=0,1,2,[(n-1)/2]。
由此可知,(16,31,23,94,53,72)是一个堆。
堆排序是一种______排序,它的一个基本问题是如何建堆,常用的建堆算法是1964年Floyd提出的______。
对含n个元素的序列进行排序时,堆排序的时间复杂性是______,所需附加存储是______。
13.
A.插入
B.选择
C.交换
D.归并
14.
A.淘汰法
B.筛选法
C.递推法
D.LRU算法
15.
A.O(nlog2n)
B.O(n)
C.O(log2n)
D.O
(1)
16.
[解答]堆排序是一种选择排序。
选择排序的基本思想是:
每次从待排序的元素中选择出排序码值最小(或最大)的元素,顺序放在已排序的元素序列的最后,直到全部排完。
堆排序的基本问题是如何建堆,常用建堆算法称为筛选法。
堆排序的执行时间是O(nlog2n),且仅需要一个用于交换的附加存储结点。
对由n个元素所组成的序列按排序码排序时,下列各常用排序算法的排序码平均比较次数分别是:
二路归并排序为______,冒泡排序为______,快速排序为______。
其中,归并排序和快速排序所需要的辅助存储分别是______和______。
17.
A.O
(1)
B.O(nlog2n)
C.O(n)
E.O(n(log2n)2)
F.O(log2n)
18.
19.
20.
21.
F
[解答]二路归并排序的时间复杂度为O(nlog2n)。
冒泡排序的时间复杂度为O(n2)。
快速排序的平均时间复杂度为O(nlog2n)。
二路归并排序需要有和待排记录等数量的存储空间,因而空间复杂度为O(n),快速排序需要的辅助存储(递归栈)为O(log2n)。
以排序码比较为基础的排序算法在最坏情况下的计算时间下界为O(nlog2n)。
下面的排序算法中,最坏情况下计算时间可以达到O(nlog2n)的是______,该算法采用的设计方法是______。
对5个互异的整数进行排序,至少需要______次比较。
22.
B.插入排序
C.选择排序
D.冒泡排序
23.
A.分治法
B.贪心法
C.动态规划方法
D.回溯法
24.
A.5
B.6
C.7
D.8
[解答]插入排序、选择排序、冒泡排序在最坏情况下,排序码比较次数都达到O(n2),只有归并排序,不受待排序序列的初始排序影响,排序码比较次数和元素移动次数一直保持在O(nlog2n)。
它是典型的分治法,先把待排序序列均分为两个子序列,并对两个子序列分别进行归并排序,再归并两个已排好序的子序列。
对5个互异的整数进行排序,至少需要7次比较。
25.对5个不同的数据元素进行直接插入排序,最大需要进行的比较次数是______。
A.8
B.10
C.15
D.25
[解答]直接插入排序,最坏情况下要做n(n-1)/2次排序码比较。
当n=5时,排序码比较次数为5×
(5-1)/2=10。
26.向具有n个结点的堆中插入一个新元素的时间复杂度为______。
D.O(nlog2n)
[解答]在向有n个元素的堆中插入一个新元素时,需要调用一个向上调整的算法,比较次数最多等于树的高度减1,即
。
27.使用递归的快速排序算法时,为了保证排序过程的时间复杂度不超过O(nlog2n),必须做到______。
A.每次序列的划分应该在线性时间内完成
B.每次归并的两个子序列长度接近
C.每次归并在线性时间内完成
D.以上全是
[解答]递归的快速排序算法属于分治法,理想情况是它把待排序的序列划分为两个规模相近的子序列(达到n/2)。
这样每次把问题的规模缩减一半,递归深度达到log2n。
28.在应用中使用文件进行数据处理的基本单位叫作______。
A.逻辑记录
B.物理记录
C.块化记录
D.存储记录
[解答]在应用中使用文件进行数据处理的基本单位是逻辑记录,简称记录。
29.设在磁盘上存放有375000个记录,作5路平衡归并排序,内存工作区能够容纳600个记录,为把所有记录排好序,需要做______趟归并排序。
A.3
B.4
C.5
D.6
[解答]初始归并段个数r=375000/600=625,归并趟数S=[logmr]=[log5625]=4。
第1趟把625个归并段归并成625/5=125个归并段,第2趟把125个归并段归并成125/5=25个归并段,第3趟归并成25/5=5个归并段,第4趟归并成5/5=1个归并段。
30.设有5个初始归并段,每个归并段有20个记录,采用5路平衡归并排序,若不采用败者树,使用传统的顺序选小(简单选择排序算法)的方法,总的比较次数是______。
A.20
B.258
C.396
D.500
[解答]5路归并就意味着在5个参加比较的记录中选择一个排序码最小的记录,用传统的方法需做4次比较,总共5×
20=100个记录,需做99次选择最小记录的操作,需要的比较次数为99×
4=396。
31.设有5个初始归并段,每个归并段有20个记录,采用5路平衡归并排序,若采用败者树选小的方法,总的比较次数是______。
B.250
C.300
[解答]5路归并就意味着在败者树中的外结点有5个,败者树的高度为h=[log25]=3,每次在参加比较的记录中选择一个排序码值最小的记录,比较次数不超过h,总共5×
20=100个记录,需做的排序码比较次数不超过100×
3=300次。
32.败者树的外结点存放的是各归并段当前参加归并的记录,如下图所示,外结点的编号0,1,2,…,m-1代表各归并段的编号,败者树的内结点存放子女结点两两比较的败者的归并段编号,内结点编号也是0,1,…,m-1。
编号为i的外结点的父结点的编号为______。
A.
B.
C.
D.
[解答]编号为i的外结点的父结点的编号为t=[(i+m)/2]。
如下图中外结点0的父结点为编号[(0+5)/2]=2的内结点,外结点4的父结点为[(4+5)/2]=4编号的内结点。
33.置换-选择排序的作用是______。
A.置换-选择排序用于生产外排序的初始归并段
B.置换-选择排序是完成将一个磁盘文件排列成有序文件的有效的外排序算法
C.置换-选择排序生成的初始归并段的长度平均是内存工作区的2倍
D.置换-选择排序实现外排序中输入、归并、输出的并行处理
[解答]置换-选择排序是在外排序的初始阶段生成初始归并段的方法,用这种方法得到的初始归并段的长度(记录数)是不等长的,其长度平均是传统等长初始归并段的2倍,从而使得初始归并段数减少到原来的近二分之一。
但是,置换-选择排序不是一个完整的生成有序文件的外排序算法。
34.最佳归并树在外排序中的作用是______。
A.完成m路归并排序
B.设计m路归并排序的优化方案
C.产生初始归并段
D.与锦标赛树的作用类似
[解答]最佳归并树在外排序中的作用是设计m路归并排序的优化方案,仿照构造Huffman树的方法,以初始归并段的长度为权值,构造具有最小带权路径长度的m叉Huffman树,可以有效地减少归并过程中的读写记录数,加快外排序的速度。
35.在下列关于外排序过程输入/输出缓冲区作用的叙述中不正确的是______。
A.暂存输入/输出的记录
B.内部归并的工作区
C.产生初始归并段的工作区
D.传送用户界面的消息
[解答]在外排序过程中输入/输出缓冲区就是排序的内存工作区,例如做m路平衡归并就需要m个输入缓冲区和1个输出缓冲区,用以存放参加归并的和归并完成的记录。
在查收初始归并段时也可用作内排序的工作区。
它没有传送用户界面的消息的任务。
在做m路平衡归并排序的过程中,为实现输入、内部归并、输出的并行处理,需要设置______个输入缓冲区和______个输出缓冲区。
36.
A.2
B.m
C.2m-1
D.2m
37.
[解答]在做k路平衡归并排序的过程中,为实现输入、内部归并、输出的并行处理,需要设置2m个输入缓冲区和2个输出缓冲区。
38.为在实现输入、内部归并、输出的并行处理过程中有效提高输入缓冲区的利用率,需要为每一个归并段建立一个缓冲区的______。
A.优先级队列
B.链式栈
C.链式队列
D.双端队列
[解答]有效提高输入缓冲区的利用率,为m个初始归并段各建立一个缓冲区的链式队列,开始时为每个队列先分配一个输入缓冲区。
另外建立空闲缓冲区的链式栈,把其余m个空闲的缓冲区送入此栈中。
在内排序的过程中,通常需要对待排序的排序码集合进行多遍扫描。
采用不同排序方法,会查收不同的排序中间结果。
设要将序列(Q,H,C,Y,P,A,M,S,R,D,F,X)中的排序码按字母序的升序排列,则______是冒泡排序一趟扫描的结果,______是初始增量为4的希尔排序一趟扫描的结果,______是二路归并排序一趟扫描的结果,______是以第一个元素为基准元素的快速排序一趟扫描的结果,______是堆排序初始建堆的结果。
A.F,H,C,D,P,A,M,Q,R,S,Y,X
B.P,A,C,S,Q,D,F,X,R,H,M,Y
C.A,D,C,R,F,Q,M,S,Y,P,H,X
D.H,C,Q,P,A,M,S,R,D,F,X,Y
E.H,Q,C,Y,A,P,M,S,D,R,F,X39.
40.
41.
E
42.
43.
[解答]冒泡排序将待排序的元素顺次两两比较,若为逆序则交换。
将序列照此方法从头到尾处理一遍的效果是将排序码值最大的元素交换到了最后的位置。
选项D满足要求。
希尔排序是按增量将文件分组。
首先取增量d1<n把全部元素分成个d1个组,所有距离为d1倍数的元素放在一组中,各组内用直接插入排序法排序;
然后取d2<d1,重复上述分组和排序工作,直至取d2=1。
选项B是取d1=4的一趟排序的结果。
二路归并排序是将两个已有序的序列合并使之成为一个大的有序序列。
选项E是二路归并排序非递归算法第一趟排序的结果。
快速排序是一种分组的递归排序方法。
它首先以第一个元素为基准,对整个序列做一趟划分,将序列中所有元素分成两部分,排序码值比它小的在前半部分,排序码值比它大的在后半部分。
再分别对这两个部分实施上述过程,一直重复到排序完成。
选项A是采用两个检测指针交替扫描的一趟划分方法排序的结果。
堆排序初始建堆后根结点是其中排序码值最小的结点,选项C是小根堆。
44.如果将所有中国人按照生日(不考虑年份,只考虑月、日)来排序,那么使用下列排序算法中最快的是______。
B.希尔排序
C.快速排序
[解答]按照所有中国人的生日(月、日)排序,一方面是n很大,另一方面d不大(d=2,两个排序码)且一个排序码的基数为12(月),另一排序码的基数为31(日),都不大,可采用多排序码,即基数排序。
其时间复杂度可达O(n)。
45.在下列指定的排序算法中,使用的附加空间与输入序列的长度及初始排列无关的是______。
A.锦标赛排序
D.归并排序
[解答]基数排序是一种分配排序,它根据排序码每一位的取值范围(基数)设置若干个桶,它的附加存储与基数有关。
如果不考虑可能需要的链接指针,它的附加存储与待排序元素个数和初始排列无关。
当待排序元素个数为n时,锦标赛排序需要n-1个附加结点以构成胜者树;
快速排序平均需要log2n个递归工作栈结点;
归并排序需要n个辅助元素。
对于快速排序算法,假设待排序的n个数据的取值都相等,则完成排序所需排序码比较次数是______,数据移动次数是______,递归工作栈所需活动记录个数是______。
46.
A.n
B.2(n-1)
C.n(n-1)/2
D.log2n
47.
48.
[解答]如果待排序的n个数据记录都相等,快速排序变成慢速排序,排序码比较次数为:
数据移动次数为2(n-1),因为每趟基准记录需要移出和移回,共执行n-1趟。
需要分配递归工作栈的活动记录n个,因为第一次外部调用也要建立活动记录。
当所有n个待排序记录的排序码(Key)都相等,直接插入排序、堆排序、冒泡排序、简单选择的排序码比较次数和数据移动次数分别为______、______、______和______。
49.
A.n-1和0
B.n(n-1)/2和n
C.n(n-1)/2和0
D.O(n)和O(n)
50.
51.
52.
[解答]所有待排序的数据记录的排序码都相等,可按照数据初始排列已经有序的情况来分析。
按照本书所给算法:
对于直接插入排序,它的排序码比较次数和数据移动次数受数据的初始排列影响,每趟只比较1次,做n-1趟,排序码比较次数总共为n-1,数据移动次数为0。
对于冒泡排序,它的排序码比较次数和数据移动次数也受数据的初始排列影响,只比较一趟,排序码比较次数n-1,数据移动次数0。
对于简单选择排序,它的排序码比较次数不受数据的初始排列影响,比较n-1趟,排序码比较次数为n(n-1)/2;
但数据移动次数受数据的初始排列影响,为0。
堆排序情况比较复杂,在siftDown算法中,每个结点最多比较2次(横向1次、纵向1次),移动2次(搬到工作单元又搬回来),所以在形成初始堆时,总共
次排序码比较,
次数据移动;
在堆排序时,做n-1次对调和重新形成堆,每次对调做3次数据移动,最多做(n-1)×
2次排序码比较,(n-1)×
(3+2)次数据移动。
综合以上,堆排序的排序码比较次数最多
,数据移动次数最多为