Implements the recursive merge sort algorithm to sort an array
using System; public class MergeSort { public static void Sort (int[] data, int left, int right) { if (left < right) { int middle = (left + right)/2; Sort(data, left, middle); Sort(data, middle + 1, right); Merge(data,left, middle, middle+1, right); } } public static void Merge(int[] data, int left, int middle, int middle1, int right) { int oldPosition = left; int size = right - left + 1; int[] temp = new int[size]; int i = 0; while (left <= middle && middle1 <= right) { if (data[left] <= data[middle1]) temp[i++] = data[left++]; else temp[i++] = data[middle1++]; } if (left > middle) for (int j = middle1; j <= right; j++) temp[i++] = data[middle1++]; else for (int j = left; j <= middle; j++) temp[i++] = data[left++]; Array.Copy(temp, 0, data, oldPosition, size); } public static void Main (String[] args) { int[] data = new int[]{2,3,1,6,2,98,4,6,4,3,45}; for (int i = 0; i < data.Length; i++) { Console.WriteLine(data[i]); } Sort(data, 0, data.Length-1); for (int i = 0; i < data.Length; i++) { Console.WriteLine(data[i]); } } }