public static void Main()
int[] numbers = { 2, 5, -4, 11, 0, 18, 22, 67, 51, 6 };
Console.WriteLine("Unsorted Array");
foreach (var item in numbers)
Console.Write("{0} ", item);
Sort(numbers, 0, numbers.Length - 1);
Console.WriteLine("\nSorted Array");
foreach (var item in numbers)
Console.Write("{0} ", item);
public static void Sort(int[] arr, int left, int right)
int middle = (left + right) / 2;
Sort(arr, middle + 1, right);
Merge(arr, left, middle, right);
private static void Merge(int[] arr, int left, int middle, int right)
int[] temp = new int[arr.Length];
while (i <= middle && j <= right)
for (int p = left; p <= right; p++)