两个有序整型数组a和b,假设a数组长度足够容纳b数组,将b数组合并到a数组,并保证a数组有序。

设m为数组a中元素个数,n为数组b中元素个数;

基本思想:从尾部开始遍历两个数组,并比较大小,将较大者放到数组a的(m+n-1)位置处。

public static void MergeTwoSortedArray(int[] a, int[] b, int m, int n)
        {
            int len = m + n - 1;
            int i=m-1, j=n-1;
            while (i >= 0 && j >= 0)
            {
                if (a[i] > b[j])
                {
                    a[len--] = a[i--];
                }
                else
                {
                    a[len--] = b[j--]; 
                }
            }
            while (i >= 0)
            {
                a[len--] = a[i--];
            }
 
            while (j >= 0)
            {
                a[len--] = b[j--];
            }
 
            for (int k = 0; k <= m+n-1; k++)
            {
                Console.Write("{0,5}", a[k]);
            }
        }