package com.bi;
import java.util.Arrays;
public class MergingSortTest01 {
public static int[] mergerSort(int[] n,int low,int high){
if(low<high){
int middle=(low+high)/2;
mergerSort(n,low,middle);
mergerSort(n,middle+1,high);
sort(n,low,middle,high);
}
return n;
}
/*public static int[] sort(int[] n,int low,int middle,int high){
int[] temp = new int[high-low+1];
int i = low,j=middle+1,k=0;
while(i<=middle && j<=high){
if(n[i]>=n[j]){
temp[k++]=n[j++];
}else{
temp[k++]=n[i++];
}
}
while(i<=middle){
temp[k++]=n[i++];
}
while(j<=high){
temp[k++]=n[j++];
}
for(int m=0;m<temp.length;m++){
n[m+low]=temp[m];
}
return n;
}*/
public static int[] sort(int[] n,int low,int middle,int high){
int[] temp = new int[high-low+1];
int i =low,j=middle+1,k=0;
while(i<=middle && j<= high){
if(n[i]>=n[j]){
temp[k++]=n[j++];
}else{
temp[k++]=n[i++];
}
}
while(i<=middle){
temp[k++]=n[i++];
}
while(j<=high){
temp[k++]=n[j++];
}
System.arraycopy(temp, 0, n, low, high-low + 1);
return n;
}
public static void main(String args[]){
int[] num = {1,6,3,5,8,2,45,3,4};
int[] newNum=mergerSort(num,0,num.length-1);
for(int a:newNum){
System.out.print(a+" ");
}
System.out.println(Arrays.toString(newNum));
}
}
转:http://blog.csdn.net/middlekingt/article/details/8446552
12-22