算法思路:
1)需要为两个数组设置指针,然后进行指针对比,将小的放置在前面
2)将剩余多余的数组里面的数据,直接copy进去到新数组中。
public static void fun(int[]arr1,int m,int[]arr2,int n){ //以上是题目给的参数,所以arr1 是要的最终的数组,先对arr1进行copy,由此,可以对两个数组做备份 int [] arrCopy = new int[m]; //注意一定要用这一句对数组进行深拷贝 //如果直接将一个数组赋值给另外一个数组的话,也就只是将其内存地址指向第一个数组 System.arraycopy(arr1,0,arrCopy,0,m); int i=0,j=0,index=0; while(i<m&&j<n){ //用来对比指针的头部数据 if(arrCopy[i]<arr2[j]){ arr1[index]=arrCopy[i]; i++; }else{ arr1[index] = arr2[j]; j++; } index++; } //此处是当另一个数组比较长的时候,直接把剩余的内容copy过去即可 if(i==m){ //证明arrcopy是已经移动完了,剩余将arr2的数据进行移动,arr2的交标是从n开始 for(int k = j;k<n;k++){ System.out.println("arr2[k]"+arr2[k]+"k的值"+k); arr1[index] = arr2[k]; index++; } } if (j==n){ for(int k = i;k<m;k++){ System.out.println("arr1[k]"+arr1[k]+"k的值"+k); arr1[index] = arrCopy[k]; i++; } } }