ImageVerifierCode 换一换
格式:DOC , 页数:10 ,大小:71.50KB ,
资源ID:1389675      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1389675.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【考研类试卷】计算机专业基础综合(排序)-试卷1及答案解析.doc)为本站会员(吴艺期)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【考研类试卷】计算机专业基础综合(排序)-试卷1及答案解析.doc

1、计算机专业基础综合(排序)-试卷 1及答案解析(总分:68.00,做题时间:90 分钟)一、单项选择题(总题数:17,分数:34.00)1.单项选择题 1-40小题。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。(分数:2.00)_2.下面给出的 4种排序方法中,( )排序法是不稳定性排序法。(分数:2.00)A.插入B.冒泡C.二路归并D.堆3.下列内部排序算法中,其比较次数(或交换次数)与序列初态无关的算法是( )。(分数:2.00)A.快速排序B.直接插入排序C.二路归并排序D.冒泡排序4.下列内部排序算法中,在初始序列已基本有序(除去 n个元素中的某 k个元素后即呈有序,k

2、n)的情况下,排序效率最高的算法是( )。(分数:2.00)A.冒泡排序B.堆排序C.直接插入排序D.二路归并排序5.下列排序算法中,( )每一趟都能选出一个元素放在最终位置上,并且是不稳定的。(分数:2.00)A.冒泡排序B.希尔排序C.简单选择排序D.直接插入排序6.下列排序方法中,时间复杂性不受数据初始状态影响,恒为 D(nlog 2 n)的是( )。(分数:2.00)A.堆排序B.冒泡排序C.直接选择排序D.快速排序7.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是( )。(分数:2.00)A.选择排序B.冒泡排序C.归并排序D.堆排序8.下列排序算法中,在每一趟都

3、能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是( )。(分数:2.00)A.直接插入排序B.归并排序C.直接选择排序D.堆排序9.对初始状态为递增序列的表按递增顺序排序最费时间的是( )算法。(分数:2.00)A.堆排序B.快速排序C.插入排序D.归并排序10.对初始状态为递增序列的表按递增顺序排序,最省时间的是( )算法。(分数:2.00)A.堆排序B.快速排序C.插入排序D.归并排序11.如果只想得到 1000个元素组成的序列中第 5个最小元素之前的部分排序的序列,用( )方法最快。(分数:2.00)A.冒泡排序B.快速排序C.简单选择排序D.堆排序12.数据表 A中

4、有 10000个元素,如果仅要求求出其中最大的 10个元素,则采用( )方法最节省时间。(分数:2.00)A.堆排序B.希尔排序C.快速排序D.直接选择排序13.若对序列(tang,deng,an,wang,shi,bai,fang,liu)采用简单选择排序法按字典顺序进行排序,下面给出的四个序列中,第三趟的结果是( )。(分数:2.00)A.an,bai,deng,wang,tang,fang,shi,liuB.an,bai,deng,wang,shi,tang,fang,liuC.an,bai,deng,wang,fang,shi,tang,liuD.an,bai,deng,wang,sh

5、i,liu,tang,fang14.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( )排序法。(分数:2.00)A.插入B.选择C.希尔D.二路归并15.若用冒泡排序方法对序列10,14,26,29,41,52从大到小排序,需进行( )次比较。(分数:2.00)A.3B.10C.15D.2516.下列( )是一个堆。(分数:2.00)A.19,75,34,26,97,56B.97,26,34,75,19,56C.19,56,26,97,34,75D.19,34,26,97,56,7517.若一组记录的关键码为(46,79,56

6、,38,40,84),则利用快速排序的方法,以第 1个记录为基准得到的一次划分结果为( )。(分数:2.00)A.38,40,46,56,79,84B.40,38,46,79,56,84C.40,38,46,56,79,84D.40,38,46,84,56,79二、综合应用题(总题数:15,分数:34.00)18.综合应用题 41-47小题。_19.某个待排序的序列是一个可变长度的字符串序列,这些字符串一个接一个地存储于唯一的字符数组中。请改写快速排序算法,对这个字符串序列进行排序。(分数:2.00)_20.设有一个数组中存放了一个无序的关键字序列 K 1 ,K 2 ,K n 。现要求将 K

7、n 放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过 n。(分数:2.00)_21.已知关键字序列(K 1 ,K 2 ,K 3 ,K N-1 )是大根堆。试写出一算法将(K 1 ,K 2 ,K 3 ,K n-1 ,K n )调整为大根堆,并利用调整算法写一个建大根堆的算法。(分数:2.00)_最小最大堆(min max Heap)是一种特定的堆,其最小层和最大层交替出现,根总是处于最小层。最小最大堆中的任一结点的关键字值总是在以它为根的子树中的所有元素中最小(或最大)。如图所示为一最小最大堆。 (分数:6.00)(1).画出在图中插入关键字为 5的结点后的最小最

8、大堆。(分数:2.00)_(2).画出在图中插入关键字为 80的结点后的最小最大堆。(分数:2.00)_(3).编写一算法实现最小最大堆的插入功能。假定最小最大堆存放在数组中,关键字为整数。(分数:2.00)_22.输入 N个只含一位数字的整数,试用基数排序的方法,对这 N个数排序。(分数:2.00)_23.试构造对 5个元素进行排序,最多只用 7次比较的算法。(分数:2.00)_24.设有 15000个无序的元素,希望用最快的速度挑选出其中前 10最大的元素。 在快速排序、堆排序、归并排序、基数排序和希尔排序中,宜采用哪种方法并说明理由?(分数:2.00)_对一个具有 7个记录的文件进行快速

9、排序,请问:(分数:4.00)(1).在最好情况下需进行多少次比较?说明理由,并给出相应实例。(分数:2.00)_(2).在最坏情况下需进行多少次比较?为什么?请给出相应实例。(分数:2.00)_25.判断下列序列是否为堆,若不是堆,则把它们调整为堆。(1)(100,85,95,75,80,60,82,40,20,10,65)(2)(100,95,85,82,80,75,65,60,40,20,10)(3)(100,85,40,75,80,60,65,95,82,10,20)(4)(10,20,40,60,65,75,80,82,85,95,100)(分数:2.00)_26.将十进制的关键字用

10、二进制数表示,对基数排序所需的时间和附设空间分别有什么影响?各是多少?(分数:2.00)_27.写出快速排序的非递归算法。(分数:2.00)_28.试设计一算法,使得在尽可能少的时间内重排数组,将所有取负值的关键字放在所有取非负值的关键字之前,并分析算法的时间复杂度。(分数:2.00)_29.写一个 HeapInsert(R,key)算法,将关键字插入到堆 R中,并保证插入后 R仍是堆。请分析算法的时间复杂度。提示:将 key先插入 R中已有元素的尾部(即原堆的长度加 1的位置,插入后堆的长度加 1),然后自下往上调整,使插入的关键字满足堆性质。(分数:2.00)_30.写一个建立堆的算法:从

11、空堆开始,依次读入元素,调用上题中堆插入算法将其插入堆中。(分数:2.00)_计算机专业基础综合(排序)-试卷 1答案解析(总分:68.00,做题时间:90 分钟)一、单项选择题(总题数:17,分数:34.00)1.单项选择题 1-40小题。下列每题给出的四个选项中,只有一个选项是最符合题目要求的。(分数:2.00)_解析:2.下面给出的 4种排序方法中,( )排序法是不稳定性排序法。(分数:2.00)A.插入B.冒泡C.二路归并D.堆 解析:解析:此题考查的知识点是排序算法的稳定性问题。如果待排序的文件中,存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,则

12、称这种排序是稳定的排序;反之,若具有相同关键字的记录之间的相对次序发生变化,则称这种排序是不稳定的排序。是否稳定与算法有关,相邻数据比较的算法是稳定的,不相邻数据比较会出现不稳定。选项 A、B、C 都是相邻元素比较,是稳定的。所以选 D。3.下列内部排序算法中,其比较次数(或交换次数)与序列初态无关的算法是( )。(分数:2.00)A.快速排序B.直接插入排序C.二路归并排序 D.冒泡排序解析:解析:此题考查的知识点是各类排序算法的思想。 冒泡排序方法就是自底向上检查这个序列,若两个相邻的元素的顺序不对,则交换。直到所有元素处理完为止。与序列初态有关,D 错。 直接插入排序思想是假设待排序的记

13、录存放在数组 Rn+1中,排序过程中的某一时刻,尺被分成两个子区间R1,Ri一 1和Ri,Rn,其中,前一个子区间是已排好序的有序区;后一个子区间是当前未排序的无序区。直接插入排序的基本操作是将当前无序区的第 i个记录 Ri插入到有序区中的适当位置,使得 R1到Ri变为新的有序区。首先比较 Ri和 Ri一 1,如果 Ri一 1Ri,则 R1i已排好序,第 i遍处理就结束了;否则交换 Ri与 Ri一 1的位置,继续比较 Ri一 1和 Ri一 2,直到找到某一个位置 j(1ji 一 1)使得 RjRj+1时为止。与序列初态有关,B 错。 快速排序是通过基准元素 v把表(文件,数据集合)划分成左、右

14、两部分,使得左边的各记录的关键字都小于 v:右边的各记录的关键字都大于等于 v;重复该过程直到排好序。与序列初态有关,A 错。 二路归并是首先把每个记录看成是一个有序序列,共 n个,将它们两两合并成n2个分类序列,每个序列长度为 2(当 n为奇数时,最后一个序列长度为 1);对n2个分类序列,再两两归并在一起;如此进行,直到归并成一个长度为 n的分类序列为止。与序列初态无关,所以选 C。4.下列内部排序算法中,在初始序列已基本有序(除去 n个元素中的某 k个元素后即呈有序,kn)的情况下,排序效率最高的算法是( )。(分数:2.00)A.冒泡排序B.堆排序C.直接插入排序 D.二路归并排序解析

15、:解析:此题考查的知识点是各类排序算法的效率。起泡排序比较 n(n一 1)2 次,没有交换次数;堆排序一次比较 log 2 n次,共需要 n轮;直接插入排序比较 n一 1次,没有交换;二路归并排序一次比较 log 2 n次,共需要 n轮。综上,应选 C。5.下列排序算法中,( )每一趟都能选出一个元素放在最终位置上,并且是不稳定的。(分数:2.00)A.冒泡排序B.希尔排序C.简单选择排序 D.直接插入排序解析:解析:本题考查各种内部排序算法的比较,考生一定要熟记下面这张表格。6.下列排序方法中,时间复杂性不受数据初始状态影响,恒为 D(nlog 2 n)的是( )。(分数:2.00)A.堆排

16、序 B.冒泡排序C.直接选择排序D.快速排序解析:解析:由这些排序方法的特点可知本题答案为 A。7.下列排序算法中,某一趟结束后未必能选出一个元素放在其最终位置上的是( )。(分数:2.00)A.选择排序B.冒泡排序C.归并排序 D.堆排序解析:解析:此题考查的知识点是各类排序算法的思想。应选 C。8.下列排序算法中,在每一趟都能选出一个元素放到其最终位置上,并且其时间性能受数据初始特性影响的是( )。(分数:2.00)A.直接插入排序 B.归并排序C.直接选择排序D.堆排序解析:解析:此题考查的知识点是各类排序算法的思想。应选 A。9.对初始状态为递增序列的表按递增顺序排序最费时间的是( )

17、算法。(分数:2.00)A.堆排序B.快速排序 C.插入排序D.归并排序解析:解析:此题考查的知识点是各类排序算法的思想。应选 B。10.对初始状态为递增序列的表按递增顺序排序,最省时间的是( )算法。(分数:2.00)A.堆排序B.快速排序C.插入排序 D.归并排序解析:解析:此题考查的知识点是各类排序算法的思想。应选 C。11.如果只想得到 1000个元素组成的序列中第 5个最小元素之前的部分排序的序列,用( )方法最快。(分数:2.00)A.冒泡排序B.快速排序C.简单选择排序D.堆排序 解析:解析:此题考查的知识点是各类排序算法的思想。冒泡排序和简单选择排序每次要比较 ni次,快速排序

18、结束后才能得到结果,堆排序可以在选择 5次后得到结果,每次比较元素次数为 log 2 n。所以应选 D。12.数据表 A中有 10000个元素,如果仅要求求出其中最大的 10个元素,则采用( )方法最节省时间。(分数:2.00)A.堆排序 B.希尔排序C.快速排序D.直接选择排序解析:解析:只有堆排序每次输出一个堆顶元素(即最大或最小值的元素),然后对堆再进行调整,保证堆顶元素总是当前剩下元素的最大或最小的,本题答案为 A。13.若对序列(tang,deng,an,wang,shi,bai,fang,liu)采用简单选择排序法按字典顺序进行排序,下面给出的四个序列中,第三趟的结果是( )。(分

19、数:2.00)A.an,bai,deng,wang,tang,fang,shi,liuB.an,bai,deng,wang,shi,tang,fang,liu C.an,bai,deng,wang,fang,shi,tang,liuD.an,bai,deng,wang,shi,liu,tang,fang解析:解析:本题根据简单选择排序法的算法思想可得答案 B。14.从未排序序列中依次取出一个元素与已排序序列中的元素依次进行比较,然后将其放在已排序序列的合适位置,该排序方法称为( )排序法。(分数:2.00)A.插入 B.选择C.希尔D.二路归并解析:解析:此题考查的知识点是各类排序算法的思想。

20、应选 A。15.若用冒泡排序方法对序列10,14,26,29,41,52从大到小排序,需进行( )次比较。(分数:2.00)A.3B.10C.15 D.25解析:解析:此题考查的知识点是冒泡算法的思想及过程。第一趟比较 5次,第 2趟比较 4次,第 3趟比较 3次,第 4趟比较 2次,第 5趟比较 1次,结束。共 15次,应选 C。16.下列( )是一个堆。(分数:2.00)A.19,75,34,26,97,56B.97,26,34,75,19,56C.19,56,26,97,34,75D.19,34,26,97,56,75 解析:解析:完全二叉树中所有非终端结点的值均不大于(或不小于)其左、

21、右孩子结点的值,则此序列可称为堆。据此,可画出二叉树,如下图所示:17.若一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第 1个记录为基准得到的一次划分结果为( )。(分数:2.00)A.38,40,46,56,79,84B.40,38,46,79,56,84C.40,38,46,56,79,84 D.40,38,46,84,56,79解析:解析:对于(46,79,56,38,40,84),取出 46,对(79,56,38,40,84)进行划分,先将 79与40交换,得到(40,56,38,79,84),再将 56与 38交换,得到(40,38,56,79,

22、84),将 46插入得到(40,38,46,56,79,84),本题答案为 C。二、综合应用题(总题数:15,分数:34.00)18.综合应用题 41-47小题。_解析:19.某个待排序的序列是一个可变长度的字符串序列,这些字符串一个接一个地存储于唯一的字符数组中。请改写快速排序算法,对这个字符串序列进行排序。(分数:2.00)_正确答案:(正确答案:int Partition(RecType R,int n , int h) 一趟快速排序算法,枢轴记录到位,并返回其所在位置 int i=n,j=h,R 0=Ri,x=Rikey; while(i=x)j一一; if(i=x)j-; if(i解

23、析:21.已知关键字序列(K 1 ,K 2 ,K 3 ,K N-1 )是大根堆。试写出一算法将(K 1 ,K 2 ,K 3 ,K n-1 ,K n )调整为大根堆,并利用调整算法写一个建大根堆的算法。(分数:2.00)_正确答案:(正确答案:void sift(RecType R,int n) 把 Rn调成大堆 int j=n;R0=Rj; for(i=n2;i=1;i=i2) if(R0keyRikey)Rj=Ri;j=i; else break; Rj=R0; void HeapBuilder(RecType R,int n) for(i=2;iRi) Ri=Rj;i=j;j=i4; 调小

24、堆 Ri=R0; else 插入元素大于双亲,调大堆 i=n;j=i4; while(j0 MaxNum 是一个常量 int len; SeqList; HeapInsert(SeqList R,KeyType key) int i,j; RRec+R1enkey=key; 增加新值到原堆中已有元素的尾部且堆的长度加 1 i=R1en2;j=Rlen; while(i0) 调整为堆 if(RRecikey 2Rlen,调整是自底向上查找,最多查找到树根,所以时间复杂度为 O(log2Rlen)。)解析:30.写一个建立堆的算法:从空堆开始,依次读入元素,调用上题中堆插入算法将其插入堆中。(分数:2.00)_正确答案:(正确答案:建立堆的算法如下: void BuildHeap(SeqList R,KeyType An) 类型定义 int i; Rlen=0: 初始化 for(i=0;i解析:

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1