import java.util.Arrays;
public class MergeSort {
public static int[] aux;
public static void mergeArr(int[] arr, int low
, int mid, int high){
for(int i = low; i <= high; i++){
aux[i] = arr[i];
}
int i = low;
int j = mid + 1;
for(int k = low; k <= high; k++){
if(i > mid){
arr[k] = aux[j++];
}
else if(j > high){
arr[k] = aux[i++];
}
else if(aux[i] < aux[j]){
arr[k] = aux[i++];
}
else{
arr[k] = aux[j++];
}
}
}
public static void sort(int[] arr){
aux = new int[arr.length];
sort(arr, 0, arr.length-1);
}
public static void sort(int[] arr, int low, int high){
int mid = low + (high-low)/2;
if(low >= high){
return;
}
sort(arr,low,mid);
sort(arr,mid+1,high);
mergeArr(arr, low, mid, high);
}
public static void main(String[] args) {
int[] arr = {1,56,23,15,26,11,5,35,8};
sort(arr);
System.out.println(Arrays.toString(arr));
}
}