public class Merge {
public static void main(String[] args) {
int[] arr = {5, 4, 3, 2, 1};
mergeSort(arr, 0, arr.length - 1);
}
private static void mergeSort(int[] arr, int begin, int end) {
if (begin < end) {
int mid = (begin + end) >> 1;
mergeSort(arr, begin, mid);
mergeSort(arr, mid + 1, end);
merge(arr, begin, mid, end);
}
}
private static void merge(int[] arr, int begin, int mid, int end) {
int[] res = new int[end - begin + 1];
int i = 0;
int i1 = begin;
int i2 = mid + 1;
while (i1 <= mid && i2 <= end) {
if (arr[i1] <= arr[i2]) {
res[i++] = arr[i1++];
} else {
res[i++] = arr[i2++];
}
}
if (i1 <= mid) {
while (i < res.length) {
res[i++] = arr[i1++];
}
} else if (i2 <= end) {
while (i < res.length) {
res[i++] = arr[i2++];
}
}
int k = begin;
i = 0;
while (i < res.length) {
arr[k++] = res[i++];
}
}
}
归并排序(Java实现)
于 2024-04-12 16:21:34 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)