import java.util.Random;
public class MergeSort {
//归并
public static void merge(int a[],int left,int mid,int right){
int i=left;
int j=mid+1;
int k=0;
int temp []=new int[right-left+1];
//把两个数组归并
while(i<=mid&&j<=right){
if(a[i]<=a[j]){
temp[k++]=a[i++];
}else{
temp[k++]=a[j++];
}
}
//把左边的数组加入到temp里面
while(i<=mid){
temp[k++]=a[i++];
}
//把右边的数组加入到temp里面
while(j<=right){
temp[k++]=a[j++];
}
//把temp数组复制到a数组中
for (int k2 = 0; k2 < temp.length; k2++){
a[k2 + left] = temp[k2];
}
}
public static int[] mergeSort(int arr[], int left,int right){
int mid=(left+right)/2;
if(left<right){
mergeSort(arr,left,mid);
mergeSort(arr, mid+1, right);
merge(arr,left,mid,right);
}
return arr;
}
public static void main(String args[]){
int a[]=new int[20];
Random random=new Random();
for(int i=0;i<a.length;i++){
a[i]=random.nextInt(100);
}
int arr[]=mergeSort(a,0,a.length-1);
for(int i=0 ;i<arr.length;i++){
System.out.print(arr[i]+"\t");
}
System.out.println();
}
}