package java面试宝典;
import java.util.Arrays;
public class 归并排序 {
public static void main(String[] args) {
int[] a={6,9,3,5,7,1,8,0,2,4};
System.out.println(Arrays.toString(a));
mergeSort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
public static void mergeSort(int[] a,int p,int r){
if(p<r){
int q=(p+r)/2;
mergeSort(a, p, q);
mergeSort(a, q+1, r);
merge(a, p, q, r);
}
}
public static void merge(int[] a,int p,int q,int r){
int[] L=new int[q-p+1];
int[] R=new int[r-q];
int k=p;
int i=0;
int j=0;
for (i = 0; i < L.length; i++) {
L[i]=a[k++];
}
for (i = 0,k=q+1; i < R.length; i++) {
R[i]=a[k++];
}
i=0;
j=0;
k=p;
while(i<L.length&&j<R.length){
if(L[i]<R[j]){
a[k++]=L[i++];
}else{
a[k++]=R[j++];
}
}
while(i<L.length){
a[k++]=L[i++];
}
while(j<R.length){
a[k++]=R[j++];
}
}
}