将两个数组合并并排序

将两个数组合并并排序_第1张图片

public static void merge(int[] a,int[] b,int lastA,int lastB)
{
int indexA=lastA-1;//数组a最后元素的索引
int indexB=lastB-1;//数组b最后元素的索引
int indexMerged=lastB+lastA-1;//合并后数组的最后元素索引
/*合并a和b,从这两个数组的最后元素开始*/
while(indexA>=0&&indexB>=0)
{
if(a[indexA]>b[indexB])
{
a[indexMerged]=a[indexA];
indexMerged--;
indexA--;
}
else
{
a[indexMerged]=b[indexB];//复制元素
indexMerged--;
indexB--;
}
}
/*将数组b剩余元素复制到适当的位置*/
while(indexB>=0)
{
a[indexMerged]=b[indexB];
indexMerged--;
indexB--;
}
}
注意:处理完B的剩余元素后,你不需要复制A的剩余元素,因为这些元素已经在那里了。

你可能感兴趣的:(程序员面试金典第5版)