?视频讲解地址:【手把手带你写十大排序】6.归并排序(Java语言)_哔哩哔哩_bilibili
代码:
public class MergeSort {
public void sortFunction(int[] array) {
int[] tempArray = new int[array.length];
mergeSortFunction(array, tempArray, 0, array.length - 1);
}
public void mergeSortFunction(int[] array, int[] tempArray, int begin, int end) {
if (begin < end) {
int mid = begin + ((end - begin) >> 1);
mergeSortFunction(array, tempArray, begin, mid);
mergeSortFunction(array, tempArray, mid + 1, end);
merge(array, tempArray, begin, mid, end);
}
}
public void merge(int[] array, int[] tempArray, int begin, int mid, int end) {
int leftPos = begin;
int rightPos = mid + 1;
int tempArrayPos = begin;
while (leftPos <= mid && rightPos <= end) {
if (array[leftPos] < array[rightPos]) {
tempArray[tempArrayPos++] = array[leftPos++];
} else {
tempArray[tempArrayPos++] = array[rightPos++];
}
}
while (leftPos <= mid) {
tempArray[tempArrayPos++] = array[leftPos++];
}
while (rightPos <= end) {
tempArray[tempArrayPos++] = array[rightPos++];
}
for (int i = begin; i <= end; i++) {
array[i] = tempArray[i];
}
}
}