归并排序是将数组二分,二分,直至分得的大小为1为止。然后按序合并分开的数组。
private static int[] mergeSort(int a[],int first,int last){
if(first < last){
int mid = (first + last)/2;
return merge(mergeSort(a, first, mid),
mergeSort(a, mid+1,last));
}else{
return new int[]{a[first]};
}
}
private static int[] merge(int[] a, int[] b) {
int temp[] = new int[a.length + b.length];
int i = 0, j = 0;
for (int k = 0; k < temp.length; k++) {
if( (j == b.length) || (i<a.length) && (a[i] < b[j]) ){
temp[k] = a[i];
i++;
}else{
temp[k] = b[j];
j++;
}
}
return temp;
}