首页
登录
从业资格
阅读下列说明和C代码,回答下列问题。[说明] 采用归并排序对n个元素进行递增排序
阅读下列说明和C代码,回答下列问题。[说明] 采用归并排序对n个元素进行递增排序
免费题库
2022-08-02
80
问题
阅读下列说明和C代码,回答下列问题。[说明] 采用归并排序对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
Define MAX 65536 void merge(int arr [ ],int p,int q,int r) { int * left,* right; int n1,n2,I,j,k; n1=q-p+1; n2=r-q; If(left=(int *)malloc((n1+1) * sizeof(int)))=NULL) { Perror( "malloc error" ); exit11 } If((right = (int *)malloc((n2+1) * sizeof(int)))=NULL) Perror("malloc error"); exit 11; } for(i=0;i大于n1;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;______;k++){ If(left
小于right[j] { ______ j++; }else{ arr[k1]=left
; i++; } } } Void merge Sort(int arr[ ], int begin, int end) { int mid; if(______){ mid=(begin + end)/2; merge Sort(arr,begin,mid); ______; Merge(arr,begin,mid,end); } }
选项
答案
解析
k大于=rarr[k]=right[j] begin大于end mergeSort(arr,mid+1,end)[解析] 首先,函数void merge(int arr[],int P,int q,int r)的意思是:对子数组arr[P…q]和子数组arr[q+L..r]进行合并。因此第一空为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)。12、分治 T(n)=2T(n/2)+O(n) O(nlogn) O(n)[解析] 归并算法实际上就是将数组一直往下分割,直到分割到由一个元素组成的n个子数组,再往上两两归并。将数组进行分割需要logN步,因为每次都是讲数组分割成两半(2x=N,x=logN)。 合并N个元素,需要进行N步,也就是O(N),则总的时间复杂度为O(NlogN)。合并过程中,使用了”个中间变量存储,left=(int*)malloc((n1+1)*sizeof(int))。所以空间复杂度为O(n)。推导递归式:假设n个元素进行归并排序需要T(n),可以将其分割成两个分别有n/2个元素的数组分别进行归并,也就是2T(n/2),在将这两个合并,需要O(n)的时间复杂度,则推导公式为T(n)=2T(n/2)+O(n)。13、n1+n2
转载请注明原文地址:http://tihaiku.com/congyezige/2408436.html
本试题收录于:
中级 软件设计师题库软件水平考试初中高级分类
中级 软件设计师
软件水平考试初中高级
相关试题推荐
程序中全局变量的存储空间在()分配。A.代码区 B.静态数据区 C.栈区
用哈希表存储元素时,需要进行冲突(碰撞)处理,冲突是指()A.关键字被
设有n阶三对角矩阵A,即非零元素都位于主对角线以及与主对角线平行且紧邻的两
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某高速路
阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。【说明】某图书馆
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某健身俱乐
阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某单位公用
阅读下列说明,回答问题。【说明】某大型集团公司的数据库的部分关系模式如下:员工表
阅读下列说明,回答问题1至问题3;将解答填入答题纸的对应栏内。【说明】某销售公司
阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某省针
随机试题
Completethenotesbelow.WriteNOMORETHANTHREEWORDSAND/ORANUMBERforeac
Childrenwhosemindswandermighthavesharperbrains,researchsuggests.A
[originaltext]W:Hmm,hi.M:Hi,Iamgoingdoortodoortonighttotellpeople
“树缝里也漏着一两点路灯光,没精打采的,是瞌睡人的眼。”句中运用的修辞格有(
与红细胞缗钱状形成有关的因素是A.红细胞表面负电荷降低 B.血液球蛋白降低
常用的抽样调查方法有( )。A.等距抽样 B.分组抽样 C.分类抽样 D
A.第三磨牙伸长 B.关节内注射硬化剂 C.手术治疗 D.夜磨牙 E.保
社区家庭访视的艺术,说法正确的是A.合适的时间家访 B.不必太周全的计划,随机
单一企业指标模式包括()。A.单一企业规模绝对水平模式 B.单一企业规模类型系
鳃裂囊肿发生于下颌角以上和腮腺者多为A.第一鳃裂来源 B.第二鳃裂来源 C.
最新回复
(
0
)