数据结构考研华东师大数据工程基础专业硕士考研真题集
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构考研华东师大数据工程基础专业硕士考研真
题集
一、配套北京航空航天大学991数据结构与C语言程序设计考研真题
二、名校考研真题之选择题解析
下面关于线性表的叙述中,错误的是哪一个?()[北方交通大学考研真题] A.线性表采用顺序存储,必须占用一片连续的存储单元
B.线性表采用顺序存储,便于进行插入和删除操作
C.线性表采用链接存储,不必占用一片连续的存储单元
D.线性表采用链接存储,便于插入和删除操作
【答案】B ~~
【解析】顺序存储,插入删除时会移动大量的元素,效率相对较低。
线性表的顺序存储结构是一种()。
[北京理工大学考研真题]
A.随机存取的存储结构
B.顺序存取的存储结构
C.索引存取的存储结构
D.Hash存取的存储结构
【答案】A ~~
【解析】线性表包括顺序存储结构和链式存储结构,顺序存储结构能够随机存取表中的元素,但插入和删除操作较麻烦,链式存储结构不能随机访问表中的元素,但是能够表示元素之间的先后次序,而且插入和删除操作较容易。
5个字符有如下4种编码方案,不是前缀编码的是()。
[2014年联考真题]
A.01,0000,0001,001,1
B.011,000,001,010,1
C.000,001,010,011,100
D.0,100,110,1110,1100
【答案】D ~~
【解析】在一个字符集中,任何一个字符的编码都不是另一个字符编码的前缀。
约定左分支表示字符‘0’,右分支表示字符‘1’,则可以用从根结点到叶子结点的路径上的分支字符串作为该叶子结点字符的编码。
如此得到的编码必是前缀编码。
D项中,编码110是编码1100的前缀,故不符合前缀编码的定义。
对如下所示的有向图进行拓扑排序,得到的拓扑序列可能是()。
[2014年联考真题]
A.3,1,2,4,5,6
B.3,1,2,4,6,5
C.3,1,4,2,5,6
D.3,1,4,2,6,5
【答案】D ~~
【解析】拓扑排序方法如下:
(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它;(2)从图中删去该顶点,并且删去从该顶点发出的全部有向边;
(3)重复上述两步,直到剩余的网中不再存在没有前趋的顶点为止。
对于此有向图进行拓扑排序所有序列为:3,1,4,6,2,5和3,1,4,2,6,5。
所以选D
向一个栈顶指针为h的带头结点的链栈中插入指针S所指的结点时,应执行()。
[北京理工大学考研真题]
A.h->next=s;
B.s->next=h;
C.s->next=h;h->next=s;
D.s->next=h-next;h->next=s;
【答案】D ~~
【解析】本题是向一个链栈中插入结点,可从头结点后插入。
先将s结点指向第一个头结点之后的结点之前,再将头结点指向s结点。
用哈希(散列)方法处理冲突(碰撞)时可能出现堆积(聚集)现象,下列选项中,会受堆积现象直接影响的是()。
[2014年联考真题]
A.存储效率
B.数列函数
C.装填(装载)因子
D.平均查找长度
【答案】D ~~
【解析】哈希方法冲突会使在查找冲突的关键字时,还要根据冲突处理办法多次比较关键字,则直接影响了平均查找长度。
28.在一棵具有15个关键字的4阶B树中,含关键字的结点数最多是()。
[2014年联考真题]
A.5
B.6
C.10
D.15
【答案】D ~~
【解析】m阶B树非根结点含关键字个数┌m/2┐- 1 <=j <=m –1。
4阶B树非根结点含关键字1~3个,所以要使关键字结点数量最多,那么每个结点只有一个关键字,一共有15个关键字那么最多有15个含有关键字的结点
38.循环队列A[0..m-1]存放其元素值,用front和rear分别表示队头和队尾,则当前队列中的元素数是()。
[南京理工大学考研真题] A.(rear-front+m)%m
B.rear-front+1
C.rear-front-1
D.rear-front
【答案】A ~~
【解析】对于循环队列,需要深刻理解队头(font)和队尾(rear)的概念,在队头进行出队操作,在队尾进行进队操作。
rear-front可能为正也可能为负,为正时元素个数=(rear-front);如果为负则元素的个数=
(rear-front+m),所以统一的公式就是(rear-front+m)%m。
39.若X是后序线索二叉树中的叶结点,且X存在左兄弟结点Y,则X的右线索指向的是()。
[2013年联考真题]
A.X的父结点
B.以Y为根的子树的最左下结点
C.X的左兄弟结点Y
D.以Y为根的子树的最右下结点
【答案】A
【解析】根据后续线索二叉树的定义,X结点为叶子结点且有左兄弟,那么这个结点为右孩子结点,利用后续遍历的方式可知X结点的后继是其父结点,即其右线索指向的是父结点。
40.在任意一棵非空二叉排序树T1中,删除某结点v之后形成二叉排序树T2,再将v插入T2形成二叉排序树T3。
下列关于T1与T3的叙述中,正确的是()。
[2013年联考真题]
I.若v是T1的叶结点,则T1与T3不同
II.若v是T1的叶结点,则T1与T3相同
III.若v不是T1的叶结点,则T1与T3不同
IV.若v不是T1的叶结点,则T1与T3相同
A.仅I、III
B.仅I、IV
C.仅II、III
D.仅II、IV
【答案】C
【解析】在一棵二叉排序树中删除一个结点后再将此结点插入到二叉排序树中,如果删除的结点是叶子结点那么在插入结点后,后来的二叉排序树与删
除结点之前相同。
如果删除的结点不是叶子结点,那么再插入这个结点后,后来的二叉树可能发生变化,不完全相同。
41.栈和队的共同点是()。
[大连理工大学考研真题]
A.都是先进后出
B.都是后进先出
C.只允许在端点处插入和删除元素
D.没有共同点
【答案】C ~~
【解析】栈和队列的区别是栈是先进后出的数据结构,队列是先进先出的数据结构,栈和队列的共同点是都只能在端点处插入和删除元素。
42.设图的邻接矩阵A如下所示,各顶点的度依次是()。
[2013年联考真题]
A.1,2,1,2
B.2,2,1,1
C.3,4,2,3
D.4,4,2,2
【答案】C
【解析】当图用邻接矩阵存储时,各顶点的度是矩阵中此结点对应的横行和纵列非零元素之和。
50.设森林F中有三棵树,第一、第二、第三棵树的结点个数分别为M1、M2和M3。
与森林F对应的二叉树根结点的右子树上的结点个数是()。
[北方交通大学考研真题]
A.M1
B.M1+M2
C.M3
D.M2+M3
【答案】D ~~
【解析】森林转换成二叉树的原则:将第一棵树的根结点作为根结点,所有结点的第一个左孩子作为左孩子,下一个兄弟结点作为右孩子,其它树作为第一棵树的右孩子。
所以森林F对应的二叉树根结点的右子树上的结点个数是除第一棵树外其他所有树的结点总数。
即M2+M3。
51.已知操作符包括‘+’、‘-’、‘*’、‘/’、‘(’和‘)’。
将中缀表达式a+b-a*((c+d)/e-f)+g转换为等价的后缀表达式ab+acd+e/f-*-g+时,用栈来存放暂时还不能确定运算次序的操作符。
若栈初始时为空,则转换过程中同时保存在栈中的操作符的最大个数是()。
[2012年联考真题] A.5
B.7
C.8
D.11
【答案】A ~~
【解析】基本思想是:采用运算符栈是为了比较运算符的优先级,所有运算符必须进栈。
只将大于栈顶元素优先级的运算符直接进栈,否则需要退栈栈顶运算符(先出栈的运算符先计算,同优先级的运算符在栈中的先计算)。
表达式a+b-a*((c+d)/e-f)+g产生后缀表达式的过程如下表所列:
通过上表可以看出,显然转换过程中同时保存在栈中的操作符的最大个数是5。
52.若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,则根结点的孩子结点()。
[2012年联考真题]
A.只有e
B.有e、b
C.有e、c
D.无法确定
【答案】A ~~
【解析】由题目可知,若一棵二叉树的前序遍历序列为a,e,b,d,c,后序遍历序列为b,c,d,e,a,其中a为这棵二叉树的根结点,接下来,在前序遍历的第二个结点为e,而后序遍历的倒数第二个结点为e,说明a的孩子结点只有e。
53.有关二叉树下列说法正确的是()。
[南京理工大学考研真题]
A.二叉树的度为2
B.一棵二叉树的度可以小于2
C.二叉树中至少有一个结点的度为2
D.二叉树中任何一个结点的度都为2
【答案】B ~~
【解析】树的度=MAX(结点1的度,结点2的度,结点3的度,...,结点n 的度)。
二叉树之所以称为二叉树,是因为二叉树中节点的度最大是2,也可以小于2。
59.将有关二叉树的概念推广到三叉树,则一棵有244个结点的完全三叉树的高度为()。
[南京理工大学考研真题]
A.4
B.5
C.6
D.7
【答案】C ~~
【解析】若二叉树中最多只有最下面两层的结点的度数可以小于2,并且最下面一层的叶结点都依次排列在该层最左边的位置上,则这样的二叉树称为完全二叉树。
具有n个(n>0)结点的完全二叉树的高度为log2(n+1)或log2n+1;由完全二叉树类推到完全三叉树可知,n个结点的完全三叉树的高度为log3(n+1)或log3n+1。
60.下列关于最小生成树的叙述中,正确的是()。
[2012年联考真题] Ⅰ.最小生成树的代价唯一Ⅱ.所有权值最小的边一定会出现在所有的最小生成树中Ⅲ.使用普里姆(Prim)算法从不同顶点开始得到的最小生成树一定相同Ⅳ.使用普里姆算法和克鲁斯卡尔(Kruskal)算法得到的最小生成树总不相同
A.仅Ⅰ
B.仅Ⅱ
C.仅Ⅰ、Ⅲ
D.仅Ⅱ、Ⅳ
【答案】A ~~
【解析】当图中存在相同权值的边时,其最小生成树可能是不唯一的,但最小生成树的代价一定是相同的,所以说法Ⅰ正确。
从n个顶点的连通图中选取n-1条权值最小的边可能构成回路,所以说法Ⅱ错误。
当某个顶点有权值相同的边,使用普里姆(Prim)算法从不同顶点开始得到的最小生成树并不一定相同,所以说法Ⅲ错误。
当最小生成树不唯一时,使用普里姆算法和克鲁斯卡尔(Kruskal)算法得到的最小生成树可能相同,也可能不同,所以说法Ⅳ错误。
由此可得出正确答案。
61.设有一棵3阶B树,如题61图所示。
删除关键字78得到一棵新B树,其最右叶结点所含的关键字是()。
[2012年联考真题]
题61图3阶B树图
A.60
B.60,62
C.62,65
D.65
【答案】D ~~
【解析】本题主要考查B树删除操作。
即被删关键字所在的结点中的关键字个数等于[m/2]-1,而与该结点相邻的右兄弟(或左兄弟)结点中的关键字数目大于[m/2]-1,则需将其兄弟结点中最小(或最大)的关键字上移至双亲结点中,而将双亲结点中小于(或大于)且紧靠该上移关键字的关键字下移至
被删关键字所在结点中。
题目中删除关键字78得到一棵新B树如下,其最右叶结点所含的关键字是65。
62.排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一趟排序。
下列排序方法中,每一趟排序结束时都至少能够确定一个元素最终位置的方法是()。
[2012年联考真题]
Ⅰ.简单选择排序Ⅱ.希尔排序Ⅲ.快速排序Ⅳ.堆排V.二路归并排序A.仅Ⅰ、Ⅲ、Ⅳ
B.仅Ⅰ、Ⅱ、Ⅲ
C.仅Ⅱ、Ⅲ、Ⅳ
D.仅Ⅲ、Ⅳ、Ⅴ
【答案】A ~~
【解析】其中简单选择排序、堆排序属于选择类排序,每一趟排序结束时将确定最大(或最小)关键字所在的位置。
快速排序每一趟排序结束时将确定基准关键字所在的位置。
希尔排序、二路归并排序每一趟排序结束时不一定能确定一个元素的最终位置。
63.对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩子的编号,在同一结点的左、右孩子中,其左孩子的编号小于其右孩子的编号,可采用()次序的遍历实现编号。
[北京理工大学考研真题]
A.前序
B.中序
C.后序
D.从根开始按层次遍历
【答案】C ~~
【解析】为了满足条件:每个结点的编号大于其左、右孩子的编号,同一结点的左孩子的编号小于其右孩子的编号,访问结点的次序必须是左一右一根,所以采用后序遍历。
64.某二叉树中序序列为A,B,C,D,E,F,G,后序序列为B,D,C,A,F,G,E则前序序列是()。
[南京理工大学考研真题]
A.E,G,F,A,C,D,B
B.E,A,C,B,D,G,F
C.E,A,G,C,F,B,D
D.上面的都不对
【答案】B ~~
【解析】由后序序列可知E为根结点,再由中序遍历结果知A,B,C,D,为E的左孩子,且A为B,C,D的父结点,到此可排除A项,按照这种逻辑依次推理,便可得出结果。
65.对同一待排序列分别进行折半插入排序和直接插入排序,两者之间可能的不同之处是()。
[2012年联考真题]
A.排序的总趟数
B.元素的移动次数
C.使用辅助空间的数量
D.元素之间的比较次数
【答案】D ~~
【解析】折半插入排序所需附加存储空间和直接插入排序相同,从时间上比较,折半插入排序仅减少了关键字间的比较次数,而记录的移动次数不变。
折半插入排序的时间复杂度仍为O(n2),所以两者之间的不同只可能是元素之间的比较次数。
66.设n是描述问题规模的非负整数,下面程序片段的时间复杂度是()。
[2011年联考真题]
x=2:
while(x<n/2)
x=2×x;
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n2)
【答案】A ~~
【解析】其中,以基本的原操作重复执行的次数作为算法的时间度量。
题目中的基本运算是语句x=2×x,设其执行时间为T(n),则有2T(n)<n/2即T(n)<log2(n/2)=O(log2n)。
67.在二叉树结点的前序序列、中序序列和后序序列中,所有叶结点的先后顺序()。
[北方交通大学考研真题]
A.都不相同
B.完全相同
C.前序和中序相同,而与后序不同
D.中序和后序相同,而与前序不同
【答案】B ~~
【解析】前序遍历形式为:根左右。
中序遍历形式为:左根右。
后序遍历形式为:左右根。
可知左右相对顺序不变,叶结点都是在左右位置上,因此,他们的相对位置不变。
68.元素a,b,c,d,e依次进入初始为空的栈中,若元素进栈后可停留、可出栈,直到所有元素都出栈,则在所有可能的出栈序列中,以元素d开头的序列个数是()。
[2011年联考真题]
A.3
B.4
C.5
D.6
【答案】B ~~
【解析】d首先出栈后的状态如下图所示。
此时可有以下4种操作:
(1)e进栈后出栈,出栈序列为decba。
(2)c出栈,e进栈后出栈,出栈序列为dceba。
(3)cb出栈,e进栈后出栈,出栈序列为dcbea。
(4)cba出栈,e进栈后出栈,出栈序列为dcbae。
76.用邻接表存储图所用的空间大小__。
[北京交通大学考研真题]
A.与图的顶点数和边数都有关
B.只与图的边数有关
C.只与图的顶点数有关
D.与边数的平方有关
【答案】A ~~
【解析】所谓邻接表就是对图G中的每个顶点v i建立一个单链表,第i 个单链表中的结点表示依附于顶点v i的边,这个单链表就称为顶点v i的边表。
因此邻接表既存储图的所有顶点,也存储顶点之间的边的信息。
77.下列关于图的叙述中,正确的是()。
[2011年联考真题]
Ⅰ.回路是简单路径
Ⅱ.存储稀疏图,用邻接矩阵比邻接表更省空间
Ⅲ.若有向图中存在拓扑序列,则该图不存在回路
A.仅Ⅱ
B.仅Ⅰ、Ⅱ
C.仅Ⅲ
D.仅Ⅰ、Ⅲ
【答案】C ~~
【解析】第一个顶点和最后一个顶点相同的路径称为回路;序列中顶点不重复出现的路径称为简单路径;回路显然不是简单路径,所以选项Ⅰ错误。
稀疏图用邻接表表示比邻接矩阵节省存储空间,稠密图适合用邻接矩阵的存储表示,所以选项Ⅱ错误。
利用拓扑排序算法可以判断图中是否存在回路,即在拓扑排序输出结束后所余下的顶点都有前驱,则说明了只得到了部分顶点的拓扑有序序列,图中存在回路。
所以选项Ⅲ正确。
78.为提高散列(Hash)表的查找效率,可以采用的正确措施是()。
[2011年联考真题]
Ⅰ.增大装填(载)因子
Ⅱ.设计冲突(碰撞)少的散列函数
Ⅲ.处理冲突(碰撞)时避免产生聚集(堆积)现象
A.仅Ⅰ
B.仅Ⅱ
C.仅Ⅰ、Ⅱ
D.仅Ⅱ、Ⅲ
【答案】D ~~
【解析】散列表的查找效率(比较次数)取决于:散列函数、处理冲突的方法和散列表的装填因子α。
α标志着散列表的装满程度,通常情况下,α越小,发生冲突的可能性越小;反之,α越大,表示已填入的记录越多,再填入记录时,发生冲突的可能性越大。
因此选项Ⅰ错误,越是增大装填因子,发生冲突的可能性就越大,查找效率也越低。
选项Ⅱ正确。
选项Ⅲ正确。
采用合适的处理冲突的
方法避免产生聚集现象,也将提高查找效率。
例如,用拉链法解决冲突时不存在聚集现象,用线性探测法解决冲突时易引起聚集现象。
79.无向图G=(V,E),其中:V={a,b,c,d,e,f)},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d),对该图进行深度优先遍历,得到的顶点序列正确的是()。
[南京理工大学考研真题] A.a,b,e,c,d,f
B.a,c,f,e,b,d
C.a,e,b,c,f, d
D.a,e,d,f,c,b
【答案】D ~~
【解析】图的深度优先遍历过程是:从图中某个初始顸点v出发,首先访问初始顶点v,然后选择一个与顶点v相邻且没被访问过的顶点u为初始顶点。
再从u出发进行深度优先搜索,直到图中与当前顶点v邻接的所有顶点都被访问过为止。
根据E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)}可知各顶点之间的邻接关系。
依据上面的原则遍历,得出遍历顺序a,e,d,f,c,b。
80.为实现快速排序算法,待排序序列宜采用的存储方式是()。
[2011年联考真题]
A.顺序存储
B.散列存储
C.链式存储
D.索引存储
【答案】A ~~
【解析】对绝大部分内部排序而言,只适用于顺序存储结构,快速排序在排序过程中,既要从后向前查找,也要从前向后查找,因此宜采用顺序存储。
81.已知序列25,13,10,12,9是大根堆,在序列尾部插入新元素18,将其再调整为大根堆,调整过程中元素之间进行的比较次数是()。
[2011年联考真题]
A.1
B.2
C.4
D.5
【答案】B ~~
【解析】对堆插入或删除一个元素,有可能不满足堆的性质,堆被破坏,需要调整为新堆。
(1)为原堆,
(2)为插入18后,
(3)比较10与18,交换后,
(4)比较25与18,不交换,即为调整后的新的大根堆。
因此调整过程中元素之间进行的比较次数为2。
90.对n(n≥2)个权值均不相同的字符构成哈夫曼树。
下列关于该哈夫曼树的叙述中,错误的是()。
[2010年联考真题]
A.该树一定是一棵完全二叉树
B.树中一定没有度为1的结点
C.树中两个权值最小的结点一定是兄弟结点
D.树中任一非叶结点的权值一定不小于下一层任一结点的权值
【答案】A ~~
【解析】哈夫曼树为带权路径长度最小的二叉树,但不一定是完全二叉树,A项错误;哈夫曼树中没有度为1的结点,B项正确;构造哈夫曼树时,最先选取两个权值最小的结点作为左右子树构造一棵新的二叉树,C项正确;哈夫曼树中任一非叶结点P的权值为其左右子树根结点权值之和,其权值不小于其左右子树根结点的权值,在与结点P的左右子树根结点处于同一层的结点中,
若存在权值大于结点P权值的结点Q,那么结点Q与其兄弟结点中权值较小的一个应该与结点P作为左右子树构造新的二叉树,由此可知,哈夫曼树中任一非叶结点的权值一定不小于下一层任一结点的权值。
91.在下述几种树中,()可以表示静态查找表。
[中国科学技术大学考研真题]
A.次优查找树
B.二叉排序树
C.B-树
D.平衡二叉树
【答案】A ~~
【解析】在有序序列的查找中,如果各个元素的查找概率都是一样的,那么二分查找是最快的查找算法,但是如果查找元素的查找概率是不一样的,那么用二分查找就不一定是最快的查找方法。
基于这种查找元素概率不想等的有序序列,可以通过构造最优二叉树的方法,使得该二叉树的带权路径长度最小,这样的二叉树的构造代价是非常大的,所以用一种近似的算法,构造次优查找树,该树的带权路径长度近似达到最小
92.若无向图G=(V,E)中含7个顶点,则保证图G在任何情况下都是连通的,则需要的边数最少是()。
[2010年联考真题]
A.6
B.15
C.16
D.21
【答案】C ~~
【解析】要保证无向图G在任何情况下都是连通的,即任意变动图G中的边,G始终保持连通。
首先需要图G的任意6个结点构成完全连通子图G1,需n(n-l)/2=6×(6—1)/2=15条边,然后再添加一条边将第7个结点与G1连接起来,共需l6条边。
本题非常容易错误地选择选项A,主要原因是对“保证图G在任何情况下都是连通的”的理解,分析选项A,在图G中,具有7个顶点6条边并不能保证其一定是连通图,即有n-1条边的图不一定是连通图。
分析选项D,图G有7个顶点21条边,那么图G一定是无向完全图,无向完全图能保证其在任何情况下都是连通的,但是这不符合题目中所需边数最少的要求。
93.对下图进行拓扑排序,可以得到不同的拓扑序列的个数是()。
[2010年联考真题]
A.4
B.3
C.2
D.1
【答案】B ~~
【解析】拓扑排序的步骤为:
(1)在有向图中选一个没有前驱的顶点并且输出它;
(2)从图中删除该顶点和以它为尾的弧。
重复上述两步,直至全部顶点均已输出。
由于没有前驱的顶点可能不唯一,所以拓扑排序的结果也不唯一。
题中所给图有三个不同的拓扑排序序列,分别为abced,abecd,aebcd。
94.如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用下列哪一种查找方法。
[北京交通大学考研真题]
A.分块
B.顺序
C.折半
D.哈希
【答案】A ~~
【解析】分块查找,把线形表分成若干块,块间是顺序存储的,所以查找速度较快。
在每一块中的数据元素的存储顺序是任意的,所以便于线性表的动态变化。
95.已知一个长度为l6的顺序表L,其元素按关键字有序排列。
若采用折半查找法查找一个L中不存在的元素,则关键字的比较次数最多是()。
[2010年联考真题]
A.4
B.5
C.6
D.7
【答案】B ~~
【解析】折半查找法在查找不成功时和给定值进行比较的关键字个数最多为(log2n)+1,在本题中,n=l6,故比较次数最多为5。
96.采用递归方式对顺序表进行快速排序。
下列关于递归次数的叙述中,正确的是()。
[2010年联考真题]
A.递归次数与初始数据的排列次序无关
B.每次划分后,先处理较长的分区可以减少递归次数
C.每次划分后,先处理较短的分区可以减少递归次数
D.递归次数与每次划分后得到的分区的处理顺序无关
【答案】D ~~
【解析】快速排序是递归的,递归过程可用一棵二叉树给出,递归调用层次数与二叉树的深度一致。
例如:待排序列{48,62,35,77,55,14,35,98),采用快速排序方法,其对应递归调用过程的二叉树如下图所示。
在最坏情况下,若初始序列按关键码有序或基本有序时,快速排序反而蜕化为冒泡排序。
即其对应递归调用过程的二叉树是一棵单支树。
因此快速排序的递归次数与初始数据的排列次序有关。
但快速排序的递归次数与每次划分后得到的分区处理顺序无关,即先处理较长的分区或先处理较短的分区都不影响递归次数。
97.m阶B-树是一棵()。
[北京邮电大学考研真题]
A.m又排序树
B.m叉平衡排序树
C.m-1叉平衡排序树
D.m+1叉平衡排序树
【答案】B ~~
【解析】一棵m阶的B-树,或为空树,或为满足下列特性的m叉树:①树中每个结点至多有m棵子树;②若根结点不是叶子结点,则至少有两棵子树;③除根结点之外的所有非终端结点至少有ém/2ù棵子树;④所有的叶子结点都出现在同一层次上,并且不带信息。
因此m阶B-树是一棵m叉平衡排序树。
98.对一组数据(2,12,16,88,5,10)进行排序,若前三趟排序结果如下:第一趟:2,12,16,5,10,88
第二趟:2,12,5,10,16,88
第三趟:2,5,10,12,16,88
则采用的排序方法可能是()。
[2010年联考真题]
A.起泡排序
B.希尔排序
C.归并排序
D.基数排序
【答案】A ~~
【解析】题目中所给的三趟排序过程,显然是使用起泡排序方法,每趟排序时从前往后依次比较,使大值“沉底”。
希尔排序的基本思想是:先对序列进行“宏观调整”,待序列中的记录“基本有序”时再进行直接插入排序。
宏观
调整的方法是:通过某种规则将大的待排序序列分割为若干小的待排序序列,再依次对这些小的序列直接插入排序。
宏观调整可以多次,每次分割的序列数逐渐增多,而每个序列中所包含的元素数逐渐减少。
归并排序的基本操作是将多个小的有序序列合并为一个大的有序序列,然后“逐趟归并”,直至整个序列为有序为止。
基数排序是分配排序的一种,这类排序不是通过关键字比较,而是通过“分配”和“收集”过程来实现排序的。
本题中,很容易看出大值逐渐“沉底”,显然使用的是起泡排序法。