Any reviews/ways to speed up/general improvements for my Merge Sort? Maybe something to simplify it or add more to it?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace prjT02L08_Predator_Prey
{
abstract class MergeSort
{
public static List<Node> Sort(List<Node> input)
{
List<Node> Result = new List<Node>();
List<Node> Left = new List<Node>();
List<Node> Right = new List<Node>();
if (input.Count <= 1)
return input;
int midpoint = input.Count / 2;
for (int i = 0; i < midpoint; i++)
Left.Add(input[i]);
for (int i = midpoint; i < input.Count; i++)
Right.Add(input[i]);
Left = Sort(Left); //Recursion! :o
Right = Sort(Right);
Result = Merge(Left, Right);
return Result;
}
private static List<Node> Merge(List<Node> Left, List<Node> Right)
{
List<Node> Result = new List<Node>();
while (Left.Count > 0 && Right.Count > 0)
{
if (Left[0].F < Right[0].F)
{
Result.Add(Left[0]);
Left.RemoveAt(0);
}
else
{
Result.Add(Right[0]);
Right.RemoveAt(0);
}
}
while (Left.Count > 0)
{
Result.Add(Left[0]);
Left.RemoveAt(0);
}
while (Right.Count > 0)
{
Result.Add(Right[0]);
Right.RemoveAt(0);
}
return Result;
}
}
}