输入一组数组进行合并排序Java代码
时间: 2024-10-23 19:02:38 浏览: 21
当然可以。合并排序是一种分治算法,它将数组分为两半,分别对它们进行排序,然后合并结果。以下是一个简单的Java代码示例,用于合并两个已经排好序的数组:
```java
public class MergeSort {
// 合并两个已排序的数组
private void merge(int[] arr1, int[] arr2, int m, int n) {
int i = 0, j = 0, k = 0;
// 创建一个新的数组来存放合并后的结果
int[] temp = new int[m + n];
// 当两个数组都有元素时,继续比较并合并
while (i < m && j < n) {
if (arr1[i] <= arr2[j]) {
temp[k++] = arr1[i++];
} else {
temp[k++] = arr2[j++];
}
}
// 如果其中一个数组还有剩余元素,将其余部分直接添加到新数组
while (i < m) {
temp[k++] = arr1[i++];
}
while (j < n) {
temp[k++] = arr2[j++];
}
// 将合并的结果复制回原数组
System.arraycopy(temp, 0, arr1, 0, m + n);
}
// 主函数,递归地进行分割和合并操作
public void sort(int[] arr, int l, int r) {
if (l < r) {
int m = (l+r)/2;
// 分割数组
sort(arr, l, m);
sort(arr, m+1, r);
// 合并左右子数组
merge(arr, l, m, r-m);
}
}
}
```
使用这个类时,你可以创建一个`MergeSort`对象,然后调用`sort()`方法传入需要排序的数组和起始、结束下标。例如:
```java
int[] arr = {5, 2, 4, 6, 1, 3};
MergeSort ms = new MergeSort();
ms.sort(arr, 0, arr.length - 1);
```
阅读全文