package sort;
public class MyMerge {
private static int[] other; // 准备一个协助数组用于保存所排的顺序
public static void sort(int[] arr){
// 对数组进行排序
int lo=0;
int hi=arr.length-1;
other=new int[arr.length];
div(arr,lo,hi); // 切割数组
}
private static void div(int[] arr,int lo,int hi){
if(lo>=hi){
return;
}
// 切割数组后归并
int mid =(lo+hi)/2;
div(arr,lo,mid);
div(arr,mid+1,hi);
merge(arr,lo,mid,hi);
}
private static void merge(int[] arr,int lo,int mid,int hi){
// 对数组进行归并
int i=lo; // 定义 【协助数组】 始索引位置
int left=lo; // 左半部分左指针
int right=mid+1; // 右半部分右指针
// 左边与右边进行比较 按从小达到顺序进入协助数组
while (left<=mid&&right<=hi){
if(arr[left]