核心code:
package com.sort;
public class mergesort {
public static void main(String[] args) {
int[] a = {1, 4, 3, 5, 2, 7, 12, 45, 13, 754, 124, 754, 6, 32, 45, 1};
mergesort mergesort = new mergesort();
mergesort.merge(a);
for (int b : a) System.out.println(b);
}
public void merge(int[] a){
merge1(a,0,a.length-1);
}
private void merge1(int[] a,int l,int r){
int mid = (l+r)/2;
merge1(a,0,mid);
merge1(a,mid+1,r);
sort(a,l,mid+1,r);
}
private void sort(int[] a,int l,int m,int r){
int[] q = new int[r-l+1];
int start = l ;
int mid=m;
int t=0;
while(l<mid||m<=r){
if(a[l]<=a[m]) q[t++]=a[l++];
else q[t++]=a[m++];
}
if(l==mid) while (m<=r) q[t++]=a[m++];
else while (l<mid) q[t++]=a[l++];
for(int i=0;i<q.length;i++) a[start++]=q[i];
}
}