实现思路:
代码实现:
import java.util.Arrays;
/**
* @Author: PurcellHuang
* @Date: 2019-08-08 12:55
*/
public class MergeSort {
/**
* @Author: PurcellHuang
* @Date: 2019-08-08 13:29
* 归并排序
*/
public static void sort(int []a, int low, int hight){
if(low < hight){
int middle = (low + hight)/2;
sort(a,low,middle);
sort(a,middle+1,hight);
MergeSort.mergeSort(a,low,middle,hight);
}
}
public static void mergeSort(int []a, int low, int middle, int hight){
int []arr = new int[hight-low+1]; //临时数组 排序后
int i = low;
int j = middle+1;
int index = 0;
while(i <= middle && j <= hight){
if(a[i]<a[j]){
arr[index] = a[i];
i++;
}else{
arr[index] = a[j];
j++;
}
index++;
}
while (i <= middle){
arr[index] = a[i];
i++;
index++;
}
while (j <= hight){
arr[index] = a[j];
j++;
index++;
}
//吧临时数组放回原数组
for(int k = 0; k < arr.length; k++){
a[k+low] = arr[k];
}
}
public static void main(String[] args) {
int []a = {2,4,5,2,1,88,8,9,21,2,5};
MergeSort.sort(a,0,a.length-1);
System.out.println(Arrays.toString(a));
}
}