public static void Merge(int[] arr,int p,int q,int r ) { int n1 = q-p; int n2 = r-q; int[] L=new int[n1]; int[] R = new int[r-n2]; for (int i =
Both you L and R array are defined as too small
Initialize them like this instead:
int[] L = new int[arr.Length]; int[] R = new int[arr.Length];