需求:有序数组a[]和b[],将它们合并成有序数组c[]。

思路:新建一个以两个集合长度之和为长度的新数组,从两数组最左边开始比起,把小的放入新集合,并用变量标记后一位置,  每次比较都是比较的最左边未比较过的元素(通过变量),循环比较,直至其中有一个集合遍历结束,将另一个集合剩余部分加入新集合中即可.
代码实现:

import java.util.Arrays;
public class TwoIntoOne {

    //合并有序数组
    private static int[] twoConvertOne(int[] a,int[] b){
        //判断边界
        if (a==null||a.length==0){
            return b;
        }
        if (b==null||b.length==0){
            return a;
        }

        //定义一个新的数组
        int[] c=new int[a.length+b.length];
        //定义初始索引;
        //m是a的索引,n是b的索引
        int m=0;
        int n=0;
        //遍历
        for (int i = 0; i < c.length; i++) {
            if (m<a.length&&n<b.length){
                if (a[m]<b[n]){
                    c[i]=a[m];
                    m++;
                }else {
                    c[i]=b[n];
                    n++;
                }
            }else if (m<a.length){
                c[i]=a[m];
                m++;
            }else if (n<b.length){
                c[i]=b[n];
                n++;
            }
        }
        //返回新的数组
        return c;
    }

    //测试
    public static void main(String[] args) {
        int[] a=new int[]{1,3,5,7};
        int[] b=new int[]{2,4,6,8,10,11};
        int[] c = twoConvertOne(a, b);
        System.out.println(Arrays.toString(c));
    }
}