JAVA实现合并排序数组

合并两个排序的整数数组A和B变成一个新的数组。

你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。


样例

给出 A = [1, 2, 3, empty, empty], B = [4, 5]

合并之后 A 将变成 [1,2,3,4,5]

思路:  

 1. 选择从后往前覆盖,先比较最后一个数的大小,然后从后往前挨个比较大小大的插入,小的等待。

2.当i和j都没有消耗完的时候,从后往前,谁大谁如,相应的指针减一

3。如果j没有循环完,则将剩下的都放入A即可。i没有循环完的话不用管,因为本次排序就是在A中进行的。                                                                                                 

 public void mergeSortedArray(int[] A, int m, int[] B, int n) {
        
                int i = m-1;
		int j = n-1;
		int k = m+n-1;
		while(i>-1&&j>-1)
			if(A[i]>B[j]) {
				A[k--] = A[i--];
			}else {
				A[k--] = B[j--];
			}
		while(j>-1)
			A[k--] = B[j--];
	    
    }

猜你喜欢

转载自blog.csdn.net/javaisnotgood/article/details/80534232