Java 中 如何合并排序数组

给定两个排序的整数数组A和B,将B合并为一个排序的数组。

注意:
您可能假设A有足够的空间来容纳B中的其他元素。在A和B中初始化的元素数分别为m和n。

分析
解决此问题的关键是将A和B的元素向后移动。如果在完成A之后B还剩下一些元素,则也需要处理这种情况。

从这个问题中获得的重要信息是循环条件。这种条件也用于合并两个排序的链表。
Java解决方案1

public class Solution {
    public void merge(int A[], int m, int B[], int n) {
 
        while(m > 0 && n > 0){
            if(A[m-1] > B[n-1]){
                A[m+n-1] = A[m-1];
                m--;
            }else{
                A[m+n-1] = B[n-1];
                n--;
            }
        }
 
        while(n > 0){
            A[m+n-1] = B[n-1];
            n--;
        }
    }
}

Java解决方案2

循环条件也可以使用m + n,如下所示。

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

在这里插入图片描述

原创文章 115 获赞 0 访问量 2971

猜你喜欢

转载自blog.csdn.net/qq_41806546/article/details/105594751