思路图:
代码:
public class Test {
public static void main(String[] args) {
int[]arr1= {1,2,3,4};
int[]arr2= {5,6,7,8};
merge(arr1,arr2);
}
private static void merge(int[] arr1, int[] arr2) {
// 创建一个临时数组temp用于合并arr1和arr2,并用t指向temp的首元素
int[]temp=new int[arr1.length+arr2.length];
int t=0;
//a1和a2分别指向arr1、arr2的首位置
int a1=0;
int a2=0;
//每次比较arr1[a1]和arr2[a2]的大小,小的添加进temp(记得移动指针),当arr1或者arr2有一个添加完时,退出while循环
while(a1<arr1.length&&a2<arr2.length) {
if(arr1[a1]<arr2[a2]) {
temp[t]=arr1[a1];
t++;
a1++;
}
else {
temp[t]=arr2[a2];
t++;
a2++;
}
}
//其中有数组没有添加完时,则依次添加进temp即可
while(a1<arr1.length) {
temp[t]=arr1[a1];
t++;
a1++;
}
while(a2<arr2.length) {
temp[t]=arr2[a2];
t++;
a2++;
}
System.out.println(Arrays.toString(temp));
}
}
运行结果: