题目:A[0..N]有序增,B[0..M]有序增,C[0...N+M],
要求: 将A,B合并成C(c有序增)
算法:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
/*************************************************
*
* 算法名称:数组合并算法
*
* 作 者:李吉忠
*
* 核心算法:MergeArray(int []arraya,int []arrayb,ref int []arrayc)
*
* 完成时间:2013-2-4
*/
class ArrayMerge

{
static void MergeArray(
int[] arraya,
int[] arrayb,
ref int[] arrayc)

{
int length_a = arraya.Length;
int length_b = arrayb.Length;
int i = 0, j = 0;
int k = 0;
while (i < length_a && j < length_b)

{
if (arraya[i] < arrayb[j])

{

arrayc[k++] = arraya[i++];

}
else 
{

arrayc[k++] = arrayb[j++];

}

}
if (i < length_a)

{
while (i < length_a)

{

arrayc[k++] = arraya[i++];

}

}
if (j < length_b)

{
while (j < length_b)

{

arrayc[k++] = arrayb[j++];

}

}

}
static void Display(
int[] array)

{
for (
int i = 0; i < array.Length; i++)

{

Console.Write(array[i]);

}

}
static void Main(
string[] args)

{
int[] a =
new int[] { 4, 6, 7 };
int[] b =
new int[] { 2, 5, 7, 8 };
int[] c =
new int[7];

MergeArray(a, b,
ref c);

Display(c);

Console.Read();

}
运行结果:
转载于:https://blog.51cto.com/jizhonglee/1151055