class Program
{
static void Main(string[] args)
{
List<int> left = new List<int>();
List<int> right = new List<int>();
for (int i = 0; i < 11; i+=2)
{
left.Add(i);
}
for (int j = 1; j < 12; j += 2)
{
right.Add(j);
}
List<int> result = Merge(left, right);
foreach(int item in result)
{
Console.Write(item + " ");
}
Console.WriteLine();
Console.ReadLine();
}
//由小到大的顺序
public static List<int> Merge(List<int> left, List<int> right)
{
int length = left.Count + right.Count;
//创建合适大小的表
List<int> result = new List<int>(length);
int leftIndex = 0;
int rightIndex = 0;
//遍历left和right,顺序比较
while (leftIndex < left.Count && rightIndex < right.Count)
{
if (left[leftIndex] < right[rightIndex])
{
result.Add(left[leftIndex]);
leftIndex++;
}
else
{
result.Add(right[rightIndex]);
rightIndex++;
}
}
//将left或者right中剩余元素加入result中
if (leftIndex < left.Count)
{
for (int i = leftIndex; i < left.Count; i++)
{
result.Add(left[i]);
}
}
if (rightIndex < right.Count)
{
for (int i = rightIndex; i < right.Count; i++)
{
result.Add(right[i]);
}
}
//返回结果
return result;
}
}