public static void Main()
int[] array = { 3, 7, 12, 14, 2, 6, 9 };
MergeSort(array, 0, array.Length-1);
Console.WriteLine("Array after sorting: " + string.Join(", ", array));
static void MergeSort(int[] array, int p, int r)
MergeSort(array, q + 1, r);
static void Merge(int[] array, int p, int q, int r)
int[] lowHalf = new int[q-p+1];
int[] highHalf = new int[r-q];
for(i = 0; i < lowHalf.Length; i++, k++)
for(j = 0; j < highHalf.Length; j++, k++)
while(i < lowHalf.Length && j < highHalf.Length)
if(lowHalf[i] < highHalf[j])
while(i < lowHalf.Length)
while(j < highHalf.Length)