public static void Main()
double[] arr = { 76, 89, 23, 1, 55, 78, 99, 12, 65, 100 };
Console.WriteLine("Merge Sort");
Console.Write("Initial array is: ");
Console.Write(arr[i] + " ");
MergeSort(arr, 0, arr.Length - 1);
Console.Write("Sorted Array is: ");
Console.Write(arr[i] + " ");
Console.WriteLine("{0}",sum);
static void MergeSort(double[] arr, double start, double end)
if (start >= end) return;
double middle = (start + end) / 2;
MergeSort(arr, start, middle);
MergeSort(arr, middle + 1, end);
CompareAndSort(arr, start, middle, end);
static void CompareAndSort( double[] arr, double start, double middle, double end)
double[] sortedArr = new double[arr.Length];
int left_tmp = start, left_arr = start, middle_arr = middle + 1;
while (left_arr <= middle && middle_arr <= end)
if (arr[left_arr] > arr[middle_arr])
sortedArr[left_tmp] = arr[middle_arr];
sortedArr[left_tmp] = arr[left_arr];
while (left_arr <= middle)
sortedArr[left_tmp] = arr[left_arr];
while (middle_arr <= end)
sortedArr[left_tmp] = arr[middle_arr];
for (int i = start; i <= end; i++)