public class MergeSort {
public static void mergeSort(int arr[] , int n) {
mergeSort(arr , 0 , n) ;
}
private static void mergeSort(int arr[] ,int l , int r) {
if(l >= r) {
return ;
}
int mid = l + (r - l) / 2 ;
mergeSort(arr , l , mid ) ;
mergeSort(arr , mid + 1 , r) ;
merge(arr , l , mid , r) ;
}
private static void merge(int arr[] , int l , int mid , int r) {
int swap[] = new int[r - l + 1] ;
for(int i = l ;i <= r ;i ++) {
swap[i - l] = arr[i] ;
}
int i = l , j = mid + 1 ;
for(int k = l ; k <= r ; k ++) {
if(i > mid) {
arr[k] = swap[j - l] ;
j ++ ;
}else if(j > r) {
arr[k] = swap[i - l] ;
i ++ ;
} else if(swap[i - l] > swap[j - l]) {
arr[k] = swap[j - l] ;
j ++ ;
}else {
arr[k] = swap[i - l] ;
i ++ ;
}
}
}
public static int[] generateRandomArray() {
int array[] = new int[10000] ;
for(int i = 0; i < array.length ;i ++) {
array[i] = (int)(Math.random() * 10000) ;
}
return array ;
}
public static int count = 0 ;
public static void main(String[] args) {
// int a[] = {1,2,3,4,90,12,13,34,25,7,8,9} ;
int sortArray[] = generateRandomArray();
mergeSort(sortArray , sortArray.length - 1) ;
for(Integer i : sortArray) {
count ++ ;
if(count % 10 == 0) {
System.out.println();
}
System.out.print(i + " ");
}
}
}