归并排序java
时间: 2023-06-30 15:18:07 浏览: 107
归并排序的java实现.docx
归并排序(Merge Sort)是一种稳定的排序算法,采用分治法的思想,将待排序数组递归分成两个子数组,再将两个有序子数组合并成一个有序数组,整个过程是递归的,最终形成一个有序数组。
以下是 Java 语言实现归并排序的示例代码:
```java
public class MergeSort {
public void merge(int[] arr, int l, int m, int r) {
int n1 = m - l + 1;
int n2 = r - m;
int[] L = new int[n1];
int[] R = new int[n2];
for (int i = 0; i < n1; ++i) {
L[i] = arr[l + i];
}
for (int j = 0; j < n2; ++j) {
R[j] = arr[m + 1 + j];
}
int i = 0, j = 0;
int k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}
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);
}
}
public static void main(String[] args) {
int[] arr = { 12, 11, 13, 5, 6, 7 };
MergeSort ms = new MergeSort();
ms.sort(arr, 0, arr.length - 1);
for (int i : arr) {
System.out.print(i + " ");
}
}
}
```
在上述示例代码中,merge() 方法是用于合并两个子数组的方法,sort() 方法是递归分治的方法,main() 方法中演示了如何使用归并排序对数组进行排序。
阅读全文