【Java】两个排序数组的合并

前几天帮同学看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]);
		}
	}
}

猜你喜欢

转载自blog.csdn.net/Littlecome/article/details/81233694