问答题 下列程序是归并排序的递归算法。【北京交通大学2006七、1(6分)】 #define maxsize 1000 #define 13.13.10 #include int r[rm+1],r2[rm+1];//r[0]闲置 int a[10]={17,1,23,77,51,1_3,3 9,11,19,1 5); void merge(int r[], int low, int m, int high, int r2[] ) {int i, j,k; k:i;10w; j=m+1; while(i<=m&&j<=high) {if(r[i]<=r[j]) {r2[k]=r[i];i++;) elSe {r2[k]=r[j];j++;) (1) ; } if(i>m) while(j<=high) {r2[k]=r[j];j++;k++;} else while(i<=m) {r2[k]=r[i]; i++;k++j} } void mergesort(int r[], int r1[], int:low, int high) {int:m,r2 Inn+1]; if(low==high) r1[low]=r[1 ow]; el8e { (2) ; mergesort(r,r2,low,m); mergesort( (3) ); merge(2:2,low,m,high,r1); } } main() {int i; for(i=0;i<=9;i++) r[i+1];a[i]; mergesort(r,r2,1,3.0); for(i=1;i<=10;i++) print:f(“ %d”,r2[i]); printf(“\n”); }
【正确答案】正确答案:(1)k++ (2)m=(low+high)/2 (3)r,r2,m+1,high
【答案解析】