归并排序:需要借助一个辅助数组
divide:
功能:递归主程序
操作:递归将数组分成两半,最底层为1元有序。然后调用merge进行归并。
Merge:
功能:将两个有序数组归为一个。
操作:创建两个指针,从两个数组的头开始比较,将有序结果放入辅助数组temp。排序结束后将temp的元素复制到原数组L。
public class MergeSort {
public static void Merge(int []L,int begin,int mid,int end,int[] temp){
int i=begin,j=mid+1,k=0;
while(i<=mid&&j<=end){
if(L[i]<=L[j]){
temp[k]=L[i];
i++;
k++;
}else{
temp[k]=L[j];
j++;
k++;
}
}
while(i<=mid){
temp[k]=L[i];
i++;
k++;
}
while(j<=end){
temp[k]=L[j];
j++;
k++;
}
for(int x=0;x<k;x++){
L[begin+x]=temp[x];
}
}
public static void divide(int []L,int begin,int end,int[] temp){
if(begin<end){
int mid=(begin+end)/2;
divide(L,begin,mid,temp);
divide(L,mid+1,end,temp);
Merge(L,begin,mid,end,temp);
}
}
}