算法思想:每次从数组A或者数组B中取一个元素放入合并后的数组。
假设:两个数组都是从小到大排列的。
C#实现:
/// <summary>
/// 合并两个有序数组,数组都是从小到大排列的,合并后的数组也是从小到大排列
/// </summary>
/// <param name="a">数组</param>
/// <param name="b">数组</param>
/// <returns>合并后的数组</returns>
private int[] mergeArray(int[] a,int[] b)
{
int[] c = new int[a.Length+b.Length];//合并后的数组
int a_num = 0; //记录当前从a中取的元素的位置
int b_num = 0; //记录当前从b中取的元素的位置
for (int i = 0; i < c.Length;i++ )
{
//以下代码从a数组或者b数组中取元素
if(a_num<a.Length && b_num<b.Length && a[a_num]<b[b_num] || b_num >= b.Length)
{
c[i] = a[a_num];
a_num++;
}
else
{
if(b_num<b.Length)
{
c[i] = b[b_num];
b_num++;
}
}
}
return c;
}