package 排序;
import java.util.Arrays;
public class Merge_Sort {
public void Merge_Sort(int[] array,int left,int right,int[] temp){
if (left<right) {
int mid=(left+right)/2;
Merge_Sort(array,left,mid,temp);
Merge_Sort(array,mid+1,right,temp);
Merge(array,left,mid,right,temp);
}
}
private void Merge(int[] array, int left, int mid, int right, int[] temp) {
int i=left;
int j=mid+1;
int index=0;
while (i<=mid&&j<=right){
if(array[i]<=array[j]){
temp[index++]=array[i++];
}else {
temp[index++]=array[j++];
}
}
while (i<=mid){
temp[index++]=array[i++];
}
while (j<=right){
temp[index++]=array[j++];
}
index=0;
while (left<=right){
array[left++]=temp[index++];
}
}
}
package 排序;
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
int[] array=new int[]{4,3,2,1};
int[] temp=new int[4];
System.out.println(Arrays.toString(array));
Merge_Sort merge_sort = new Merge_Sort();
merge_sort.Merge_Sort(array,0, array.length-1,temp);
System.out.println(Arrays.toString(array));
}
}