前几天帮同学看cvte的题,第一道编程题我依稀记得是这样的,对两个排序数组进行合并。当时看到题想的是定义两个指针,然后按大小放到一个新的数组里。但当时时间紧,没有写出来,也没看清同学是怎样写的。
早上想了一下,这样写就可以。道理和两个指针应该是一样的。
这个代码不能进行查重判断,只是排序。
public class Demo1 {
public int[] mergerSortArray(int[] A, int[] B) {
if (A == null && B == null) {
return null;
}
if (A == null) {
return B;
}
if (B == null) {
return A;
}
int[] result = new int[A.length + B.length];
int startA = 0;
int startB = 0;
int startResult = 0;
while (startA < A.length && startB < B.length) {
if (A[startA] > B[startB]) {
result[startResult++] = B[startB++];
} else {
result[startResult++] = A[startA++];
}
}
while (startA < A.length) {
result[startResult++] = A[startA++];
}
while (startB < B.length) {
result[startResult++] = B[startB++];
}
return result;
}
public static void main(String[] args) {
Demo1 d = new Demo1();
int[] A = { 1, 7, 9 };
int[] B = { 2, 4, 6 };
int[] result = d.mergerSortArray(A, B);
for (int i = 0; i < result.length; i++) {
System.out.println(result[i]);
}
}
}