public static void Main()
int[] sampleData = { 27, 56, 33, 18, 78, 3 };
Sorter.SortArray(sampleData);
Console.WriteLine(string.Join(", ", sampleData));
static public void SortArray(int[] toBeSortedArray)
if (toBeSortedArray.Length <= 1) return;
int[] leftHalf = new int[toBeSortedArray.Length / 2];
int[] rightHalf = new int[toBeSortedArray.Length - leftHalf.Length];
for (int i = 0; i < toBeSortedArray.Length; i++)
if (i < leftHalf.Length) {
leftHalf[i] = toBeSortedArray[i];
rightHalf[i - leftHalf.Length] = toBeSortedArray[i];
while (leftIndex + rightIndex < toBeSortedArray.Length)
if (rightIndex >= rightHalf.Length || (leftIndex < leftHalf.Length && leftHalf[leftIndex] < rightHalf[rightIndex]))
toBeSortedArray[leftIndex + rightIndex] = leftHalf[leftIndex];
toBeSortedArray[leftIndex + rightIndex] = rightHalf[rightIndex];