/// <summary>
/// 归并排序
/// </summary>
/// <param name="a">已排序的第一个数组</param>
/// <param name="b">已排序的第二个数组</param>
/// <returns>合并后的数组</returns>
public static int[] MergeSort(int[] a, int[] b)
{
int[] result = new int[a.Length + b.Length];// 合并后的数组
int aIndex = 0, bIndex = 0;// a,b数组游标
for (int i = 0; i < a.Length + b.Length; i++)
{
if (a[aIndex] <= b[bIndex])// 添加a数组的值
{
result[i] = a[aIndex];
aIndex++;
if (aIndex >= a.Length)// 添加b数组中剩余的值
{
for (int j = bIndex; j < b.Length; j++)
{
i++;
result[i] = b[j];
}
break;// 添加完毕,跳出循环
}
}
else// 添加b数组的值
{
result[i] = b[bIndex];
bIndex++;
if (bIndex >= b.Length)// 添加a数组中剩余的值
{
for (int j = aIndex; j < a.Length; j++)
{
i++;
result[i] = a[j];
}
break;// 添加完毕,跳出循环
}
}
}
return result;// 返回合并后的数组
}
归并排序
最新推荐文章于 2024-03-26 17:18:09 发布