package 归并排序;
import java.util.Arrays;
public class guibing {
public static void merge(int[] array, int low, int mid, int high) {
int[] tmpArr = new int[high - low + 1];
int k = 0;
int s1 = low;
int e1 = mid;
int s2 = mid + 1;
int e2 = high;
while (s1 <= e1 && s2 <= e2) {
if (array[s1] <= array[s2]) {
tmpArr[k++] = array[s1++];
} else {
tmpArr[k++] = array[s2++];
}
}
while (s1 <= e1) {
tmpArr[k++] = array[s1++];
}
while (s2 <= e2) {
tmpArr[k++] = array[s2++];
}
for (int i = 0; i < tmpArr.length; i++) {
array[i + low] = tmpArr[i];
}
}
public static void mergeSortRec(int[] array, int low, int high) {
if (low == high) {
return;
}
int mid = (high + low) >>> 1;
mergeSortRec(array, low, mid);
mergeSortRec(array, mid + 1, high);
merge(array, low, mid, high);
}
public static void mergeSortDiGui(int[] array) {
mergeSortRec(array, 0, array.length - 1);
}
public static void main(String[] args) {
int[] ayyay = {1, 9, 6, 4, 5, 78, 2, 147, 56};
System.out.println(Arrays.toString(ayyay));
mergeSortDiGui(ayyay);
System.out.println(Arrays.toString(ayyay));
}}