面试题 10.01. 合并排序的数组
链接
// m:A中的数 n:B中的数
public void merge(int[] A, int m, int[] B, int n)
{
int k = m + n - 1, i = m - 1, j = n - 1;
while (i >= 0 && j >= 0)
{
//如果 B 中最大数大于 A 中最大数,则将 B 中最大数放到 k 的位置
if (B[j] > A[i])
{
A[k--] = B[j--];
} else
//反之则将A中最大数放到 k 的位置
{
A[k--] = A[i--];
}
}
//B 中 剩余的数都小于 A 中最小的数
while (j >= 0)
{
A[k--] = B[j--];
}
}