public class Test {
static void sort(int[] arr,int low,int high){
if(low < high){
int middle = (low+high)/2;
sort(arr,low,middle);
sort(arr,middle+1,high);
merge(arr,low,middle,high);
}
}
static void merge(int[] arr,int low,int middle,int high){
int[] nums = new int[high-low+1];
int k = 0;
int i = low;
int j = middle+1;
while(i<=middle&&j<=high){
if(arr[i]>arr[j])
nums[k++] = arr[j++];
else
nums[k++] = arr[i++];
}
//下面这两个while只会执行一个
while(i<=middle)
nums[k++] = arr[i++];
while(j <= high)
nums[k++] = arr[j++];
k = 0;
for(int x = low;x <= high;x++)
arr[x] = nums[k++];
}
public static void main(String[] args) {
int[] arr = new int[]{45,4545,0,2,45,22};
sort(arr,0,arr.length-1);
for(int i = 0;i < arr.length;i++)
System.out.println(arr[i]);
}
}