来一个Java的合并排序代码
时间: 2024-04-29 10:23:58 浏览: 12
以下是Java的合并排序代码:
```java
public class MergeSort {
public static void main(String[] args) {
int[] arr = { 5, 2, 7, 1, 8, 4, 9, 3, 6 };
mergeSort(arr, 0, arr.length - 1);
System.out.println(Arrays.toString(arr));
}
public static void mergeSort(int[] arr, int start, int end) {
if (start < end) {
int mid = (start + end) / 2;
mergeSort(arr, start, mid);
mergeSort(arr, mid + 1, end);
merge(arr, start, mid, end);
}
}
public static void merge(int[] arr, int start, int mid, int end) {
int[] temp = new int[arr.length];
int i = start;
int j = mid + 1;
int k = start;
while (i <= mid && j <= end) {
if (arr[i] <= arr[j]) {
temp[k++] = arr[i++];
} else {
temp[k++] = arr[j++];
}
}
while (i <= mid) {
temp[k++] = arr[i++];
}
while (j <= end) {
temp[k++] = arr[j++];
}
for (int x = start; x <= end; x++) {
arr[x] = temp[x];
}
}
}
```
该代码实现了一个递归的合并排序算法,可以对整型数组进行排序。在算法中,首先将数组分成两个子数组,然后分别对这两个子数组进行排序,最后将它们合并起来。函数 `mergeSort` 是递归函数,它将数组分成两个子数组直到每个子数组只包含一个元素。函数 `merge` 是合并函数,用于将两个有序子数组合并成一个有序数组。算法的时间复杂度是 O(nlogn)。