首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答【问题1】至【问题3】,将解答写在答题纸的对应栏内。 【说明】 采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排
阅读下列说明和C代码,回答【问题1】至【问题3】,将解答写在答题纸的对应栏内。 【说明】 采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排
admin
2015-12-01
69
问题
阅读下列说明和C代码,回答【问题1】至【问题3】,将解答写在答题纸的对应栏内。
【说明】
采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排序的子数组得到排序结果。
下面的C代码是对上述归并算法的实现,其中的常量和变量说明如下:
arr:待排序数组
P,q,r:一个子数组的位置从P到q,另一个子数组的位置从q+1到r
begin,end:待排序数组的起止位量
left,right:临时存放待合并的两个子数组
n1,n2:两个子数组的长度
i,j,k:循环变量
mid:临耐变量
【C代码】
#inciude<stdio.h>
#inciude<stdlib.h>
Define MAX 65536
void merge(int arr([],int P,int q,int r){
int*left,*right;
int nl,n2,I,J,k;
n1=q—P+1:
n2=r—q:
If(left=(int*)malloc((nl+1)*sizeof(int)))=NULL)(
Perror(“malloc error”):
exit(1);
}
If((right=(int*)malloc((n2+1)*sizeof(int)))=NULL){
Perror(“malloc error”);
exit(1);
}
for(i=0;i<nl;i++){
left
=arr[p+i];
}
left
=MAX;
for(i=0;i<n2;i++){
right
=arr[q+i+1]
}
right
=MAX;
i=0;j=0;
For(k=p;(1);k++)(
If(1eft
>right[j]{
(2)
j++;
)else{
arr[k1]=left
;
i++:
}
}
}
Void merge Sot-t(int arr(),int begin,int end){
int mid:
if( (3) ){
mid=(begin+end)/2;
merge Sort (arr,begin,mid);
(4) ;
Merge(arr,begin,mid,end);
}
}
【问题1】
根据以上说明和C代码,填充(1)一(4)。
【问题2】
根据题干说明和以上C代码,算法采用了(5)算法设计策略,分析时间复杂度时,列出其递归式位 (6) ,接触渐进时间复杂度 (7) (用O符号表示)。空间复杂度为 (8) 。(用O符号表示)
【问题3】
两个长度分别为n1和n2的已经排好序的子数组进行归并,根据上述C代码,则元素之间比较次数为 (9) 。
选项
答案
【问题1】 (1)k<=r (2)arr[k]=right[j] (3)begin<end (4)mergeSort(arr,mid+1,end) 【问题2】 (5)分治 (6)T(n)=2T(n/2)+O(n) (7)O(nlogn) (8)O(n) 【问题3】 (9)n1+n2
解析
【问题1】
首先,函数void merge(int arr[],int P,int q,int r)的意思是:对子数组arr[p…q3和子数组arr[q+L..r3进行合并。因此第一空为k<=q;由于是采用归并排序对n个元素进行递增排序,所以第二空是将left
和right[j]的小者存放到arr[k]中去,即arr[k]=right[j]:当数组长度为1时,停止递归,因为此时该数组有序,则第三空为begin<end,即数组至少有两个元素才进行递归。合并了begin到mid之间的元素,继续合并mid+1到end之间的元素,则第四空为mergeSort(arr,mid+1,end)。
【问题2】
归并算法实际上就是将数组一直往下分割,直到分割到由一个元素组成的n个子数组,再往上两两归并。
将数组进行分割需要logN步,因为每次都是讲数组分割成两半(2x=N,x=logN)。
合并N个元素,需要进行N步,也就是O(N),则总的时间复杂度为O(NlogN)。
合并过程中,使用了n个中间变量存储,left=(int*)malloc((nl+1)*sizeof(int))。所以空间复杂度为O(n)。
推导递归式:
假设n个元素进行归并排序需要T(n),可以将其分割成两个分别有n/2个元素的数组分别进行归并,也就是2T(n/2),在将这两个合并,需要O(n)的时间复杂度,则推导公式为T(n)=2T(n/2)+O(n)。
转载请注明原文地址:https://kaotiyun.com/show/xdDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
请在(1)、(2)、(3)、(4)空白处填写恰当的内容。Web客户机与服务器共同遵守(1)协议,其工作过程是;Web客户端程序根据输入的(2)连接到相应的Web服务器上,并获得指定的Web文档。动态网页以(3)程序的形式在服务器端处理,并给客户端返
IPSec工作在TCP/IP协议栈的(1),为TCP/IP通信提供访问控制、(2)、数据源验证、抗重放、(3)等多种安全服务。IPSec的两种工作模式分别是(4)和(5)。(1)~(5)备选答案:A.应用层B.网络层C.数据链
为了使DNS_Server1能正确解析本地Web站点的域名,需对DNS_Server1中的DNS服务进行配置。在图1所示的对话框中,新建的区域名称是(1);在图2所示的对话框中,添加的新建主机名称为(2),IP地址栏应填入(3)。将DNS_Serve
为了使DNS_Server1能正确解析本地Web站点的域名,需对DNS_Server1中的DNS服务进行配置。在图1所示的对话框中,新建的区域名称是(1);在图2所示的对话框中,添加的新建主机名称为(2),IP地址栏应填入(3)。如下图所示,配置允许
阅读以下关于在ISDN网中应用点对点协议(PPP)和按需拨号路由(DDR)技术的说明,结合网络拓扑图回答问题1至问题4。【说明】综合数字业务网(ISDN)由数字电话和数据传输服务两部分组成,提供基本速率接口(BRI)和基群速率接口(PRI)两种服
根据你的网络工程经验,请用250字以内的文字简要描述该21层教学综合大楼网络层次结构设计的要点。(不要求画图)该21层教学综合大楼的部分网络拓扑结构如图1-22所示,其中L3_switch1、L3_switch2为该教学综合大楼的两台核心交换机;Swi
网络维护是网络管理中一项很重要的工作。由于网络协议和网络设备的复杂性,许多故障解决起来绝非像解决单机故障那么简单。网络故障的定位和排除,既需要长期的知识和经验积累,也需要一系列的软件和硬件工具,这样才能解决我们在学习或工作中遇到的网络故障。
VPN使用的隧道协议可以有那几类,分别有哪些协议?VPN路由器配置如下,请解释画线部分含义。Vpdn-group1(1)Accept-dialinprotocol12tpvirtual-template1terminate
在RAS上存在着两个RJ45的端口,分别为“Console”与“AUX”,请问这两个端口的用途是什么?(控制在100个字以内)在第四步中,进入虚拟操作台后,在IOS环境下输入了如下的配置,请解释(1)~(4)处的标有下划线部分配置命令的含义(“◇”后为
在图4-8所示的无线接待室中WLAN采用的体系结构如图4-9所示,请将(1)~(3)空缺处填写完整IEEE802.11定义了无线局域网(WLAN)的两种工作模式,根据图4-8所示的网络拓朴结构可判断出该WLAN的工作模式是(4)。当前WLAN中主要使
随机试题
兴趣
下列哪些为栓剂的主要吸收途径()。
配管配线工程中,当选用钢管明配时,其连接方式应为()。
在砂土地层中施工泥浆护壁成孔灌注桩,桩径1.8m,桩长52m,应优先考虑采用()。[2016年真题]
下列许可证什中实行“一批一证”制度的有()。
某公司进口了一批铜废碎料,根据国家现行规定,该公司在办理进口报关手续时,必须向海关递交由国家环保局签发的进口废物批准证书。()
支票的出票人于2005年9月9日出票时,在票面上记载“到期日为2005年9月19日”。该记载有效。()
美国富尔顿制成蒸汽汽船,发生的时代是()。
西方教育学传统始于古代希腊的苏格拉底、__________、__________。
FrenchCultureFrenchculturehasbeenknownfortheresilienceofitspeopleandaestheticsenseincinema,cuisineandfashion
最新回复
(
0
)