//合并两个有序数组 voidmerge(int *nums1, int nums1Size, int m, int *nums2, int nums2Size, int n) { //将num1中的数据转移到temp中。 //temp1指向num1等价数据区 temp2指向num2 res指向目标 int * temp1=(int *)malloc(m*sizeof(int)); int *temp2 =nums2; int *res=nums1; int *end1=temp1+m; int *end2=temp2+n; memcpy(temp1,nums1,m*sizeof(int)); while(temp1!=end1&&temp2!=end2) { *(res++)=*temp1<=*temp2?(*temp1++):(*temp2++); } if(temp1==end1) memcpy(res,temp2,(end2-temp2)*sizeof(int)); else memcpy(res,temp1,(end1-temp1)*sizeof(int)); }