您的位置:首页 > 其它

合并两个顺序表

2009-11-06 20:52 120 查看
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: