public static void Main()
var numbers = new int[]{1,5,7,2,4,6,5,4};
var sorted = Sort(numbers);
for(int i = 0; i< numbers.Length; i++){
Console.Write(numbers[i] + ",");
public static int [] Sort(int[] numbers){
return divide(numbers, 0, numbers.Length-1);
public static int [] divide(int[] list, int start, int end){
var left = divide(list, start, (end-start)/2);
var right = divide(list, (end-start)/2+1, end);
return Merge(left, right);
return new int[] {list[start]};
public static int [] Merge(int[] left, int[] right){
var mergedArray = new int[left.Length+right.Length];
for(int i = 0; i< mergedArray.Length; i++){
if(x==left.Length &&y<right.Length){
mergedArray[i]= right[y];
}else if(y==right.Length && x<left.Length){
mergedArray[i] = left[x];
mergedArray[i] = left[x];
}else if(left[x]>right[y]){
mergedArray[i] = right[y];