Collections Data Structure C#

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