public class MergeSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int size = 10;
int[] a = new int[size];
for(int i = 0; i < size; i++)
a[i] = (int)(Math.random()*10);
print(a);
mergeSort(a, 0, size-1);
print(a);
}
static void print(int[] a) {
for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");
System.out.println();
}
static void mergeArray(int[] a, int low, int mid, int high) {
int[] temp = new int[high-low+1];
int i = low, j = mid+1;
int k = 0;
while(i <= mid && j <= high) {
if(a[i] <= a[j])
temp[k++] = a[i++];
else
temp[k++] = a[j++];
}
while(i <= mid)
temp[k++] = a[i++];
while(j <= high)
temp[k++] = a[j++];
for(int index = 0; index < temp.length; index++)
a[low+index] = temp[index];
}
static void mergeSort(int[] a, int low, int high) {
if(low < high) {
int mid = low + (high-low)/2;
mergeSort(a, low, mid);
mergeSort(a, mid+1, high);
mergeArray(a, low, mid, high);
}
}
}