Mega Code Archive

 
Categories / C# / Collections Data Structure
 

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]);     }   } }