package nomal;
public class MergeSort {
public static void mergeSort(int[] numbers, int low, int high) {
int center = (low + high) / 2;
if (low < high) {
mergeSort(numbers, low, center);
mergeSort(numbers, center + 1, high);
heBing(numbers, low, center, high);
}
}
private static void heBing(int[] numbers, int low, int center, int high) {
int[] newNum = new int[numbers.length];
int findex = low;
int sindex = center + 1;
int index = low;
while (findex <= center && sindex <= high ) {
if (numbers[findex] <= numbers[sindex]) {
newNum[index++] = numbers[findex++];
} else {
newNum[index++] = numbers[sindex++];
}
}
while (findex <= center) {
newNum[index++] = numbers[findex++];
}
while (sindex <= high) {
newNum[index++] = numbers[sindex++];
}
index = low;
while (index <= high) {
numbers[index] = newNum[index];
index++;
}
}
public static void main(String[] args) {
int[] arr = {3,5,3,2,1};
mergeSort(arr, 0, arr.length - 1);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}