两个有序整型数组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]);
}
}