Объединить два упорядоченных целочисленных массива в один упорядоченный массив - C#
Формулировка задачи:
Даны два упорядоченных массива целых чисел М1 и М2. Объединить их в один упоря-доченный массив. Рассмот¬реть случаи, когда массивы М1 и М2 упорядочены одинаково и когда — по-разному.
Решение задачи: «Объединить два упорядоченных целочисленных массива в один упорядоченный массив»
textual
Листинг программы
private static void arrayMerge(string[] args)
{
int[] a = new int[] { 2, 5, 8, 9, 11, 36, 2567 },
b = new int[] { -468, -441, -66, -65, -12, -10, 6, 8, 10, 12, 36, 37, 10000 }.Reverse().ToArray();
int len1 = a.Length;
int len2 = b.Length;
int[] result = new int[len1 + len2];
int aPos = 0, aInc = 1;
if (a[len1 - 1] < a[0])
{
aPos = len1 - 1;
aInc = -1;
}
int bPos = 0, bInc = 1;
if (b[len1 - 1] < b[0])
{
bPos = len2 - 1;
bInc = -1;
}
for (int i = 0; i < len1 + len2; i++)
{
if (a[aPos] < b[bPos])
{
result[i] = a[aPos];
aPos += aInc;
if (aPos == -1 || aPos == len1)
{
while (++i < len1 + len2)
{
result[i] = b[bPos];
bPos += bInc;
}
break;
}
}
else
{
result[i] = b[bPos];
bPos += bInc;
if (bPos == -1 || bPos == len2)
{
while (++i < len1 + len2)
{
result[i] = a[aPos];
aPos += aInc;
}
break;
}
}
}
}