首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C代码,回答【问题1】至【问题3】,将解答写在答题纸的对应栏内。 【说明】 采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排
阅读下列说明和C代码,回答【问题1】至【问题3】,将解答写在答题纸的对应栏内。 【说明】 采用归并排序对n个元素进行递增排序时,首先将n个元素的数组分成各含n/2个元素的两个子数组,然后用归并排序对两个子数组进行递归排序,最后合并两个已经排
admin
2015-12-01
50
问题
阅读下列说明和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至问题3,将解答填入解答栏内。【说明】某公司租用了一段C类地址203.12.11.0/24~203.12.14.0/24,如下图所示。其网间地址是172.11.5.14/24。要求网内所有PC都能上网。
该网络采用R1~R7共7台路由器,采用动态路由协议OSPF。由图1-1可见,该网络共划分了3个OSPF区域,其主干区域为(1),主干区域中,(2)为区域边界路由器,(3)为区域内路由器。下表是该系统中路由器的IP地址分配表。请根据上
下图为RouterB上的路由表信息,写出查询路由表的命令:(1)。该路由器上运行的路由协议为(2)。行政办公楼部门A所属网络地址是(3),部门B所属网络地址是(4)。在主机D上使用命令TracertDNSServer,显示结
与ISDN相关的网络设备主要有TA、NT1、NT2、TE1、TE2等。在图2-9所示的网络拓扑结构中,路由器Router1和ISDN之间是否需要加入终端适配器(TA)?请用150字以内的文字简要说明理由。以下是在路由器Router1上的部分配置信息,结
解释图10-2中的PVC和SVC。以下是LANE工作过程,其顺序已乱,请排序。①LEC接着便向其他LEC广播这个响应。②在地址表中含有被称为MAC地址的LEC向LEC作出响应。③LES发送多点组播至网络上的其他LEC。④
若采用电话线方式上网,并按要求在计算机连入网络的同时能通电话,连网速率高于500Kbps,可以选用哪种技术方案?其最高通信速率为多少?若采用电视铜缆接入计算机主干网络,用户端需增添什么设备?网络通信速率为多少?
在图4-8所示的无线接待室中WLAN采用的体系结构如图4-9所示,请将(1)~(3)空缺处填写完整在图4-8所示的网络拓扑结构中,无线接入点AP1控制的所有终端组成一个(7)。最适合在图4-8所示的ADSL接入网上实时传输视频数据的MPEG系列标准是
简述网络规划阶段需求分析的方法和解决的问题。(控制在100个字以内)在网络规划阶段“系统可行性分析和论证”的主要内容是什么?(控制在100个字以内)
随机试题
单水力压差式封隔器找窜法适于()找窜。
格拉斯哥昏迷计分法(GCS)的计分依据是()。
处在待售或待租的房源称为()。
政府对价格管理的主要内容是()。
背景资料某10层住宅楼为钢筋混凝土框架结构,总建筑面积12000m2。外檐装修大部分为下部镶贴花岗石、上部水泥砂浆抹灰及涂料涂饰,少部分采用玻璃幕墙。业主委托了某监理公司进行施工阶段的监理。施工前后发生了以下事件:事件一:工程开工前,由项目经理主持编制了
合同索赔按照索赔目的可分为()。
下列各项经济业务中,属于经营活动引起的现金流入的有()。
小雪今年上高二,某日在放学回家的路上被某男青年性侵犯,并怀孕。事发后,小雪不敢把事情告诉家人,自己偷偷到医院将孩子打掉。因为这件事,小雪似乎变了一个人,喜欢独处,与平时要好的同学关系渐渐疏离,情绪也变得暴躁,家长和老师都对她的变化感到奇怪。学校社会工作者小
[2004年10月]甲、乙两人同时从同一地点出发相背而行,1小时后他们分别到达各自的终点A和B。若从原地出发,互换彼此的目的地,则甲在乙到达A之后35分钟到达B,则甲的速度和乙的速度之比是()。
Ifthedoctor(come)______earlierlastnight,Ninawouldbealivetoday.
最新回复
(
0
)