归并排序
import java.util.*;
public class Solution {
public int[] MySort (int[] arr) {
mergeSort(arr,0,arr.length-1);
return arr;
}
public void mergeSort(int[] arr,int left,int right){
if(left<right){
int middle = left + (right-left)/2;
mergeSort(arr,left,middle);
mergeSort(arr,middle+1,right);
merge(arr,left,middle,right);
}
}
public void merge(int[] arr,int left, int middle,int right){
int[] temp = new int[right-left+1];
int index = 0;
int i = left,j = middle+1;
while(i <= middle && j<=right){
if(arr[i] < arr[j]){
temp[index++] = arr[i++];
}else{
temp[index++] = arr[j++];
}
}
while(i<=middle){
temp[index++] = arr[i++];
}
while(j<=right){
temp[index++] = arr[j++];
}
for(int k = 0;k<temp.length;k++){
arr[left+k] = temp[k];
}
}
}