前两天我们分享了 Python 实现归并排序算法后,今天我们将使用 Java 语言来实现这一经典算法。
可点击下方文章标题,直接跳转回顾 Python 实现归并排序算法哦!
Python 实现归并排序算法
归并排序,作为一种分治策略的代表,其核心思想是将大问题分解为小问题,通过解决小问题来逐步解决整个问题。具体到归并排序,即是将待排序数组不断分割成两半,对每一半进行排序,最后再将两个已排序的部分合并成一个有序的整体。
下面是使用 Java 实现归并排序算法的示例代码:
public class MergeSort {
public static void main(String[] args) {
int[] arr = {12, 11, 13, 5, 6, 7};
mergeSort(arr, 0, arr.length - 1);
System.out.println("排序后的数组:");
for (int i : arr) {
System.out.print(i + " ");
}
}
public static void mergeSort(int[] arr, int left, int right) {
if (left int mid = (left + right) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}
}
public static void merge(int[] arr, int left, int mid, int right) {
int n1 = mid - left + 1;
int n2 = right - mid;
// 创建临时数组
int[] L = new int[n1];
int[] R = new int[n2];
// 拷贝数据到临时数组
System.arraycopy(arr, left, L, 0, n1);
System.arraycopy(arr, mid + 1, R, 0, n2);
// 合并临时数组回原数组
int i = 0, j = 0;
int k = left;
while (i if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
// 拷贝 L 剩余元素
while (i arr[k] = L[i];
i++;
k++;
}
// 拷贝 R 剩余元素
while (j arr[k] = R[j];
j++;
k++;
}
}
}
运行上述程序,输出结果为:
排序后的数组:5 6 7 11 12 13
归并排序的时间复杂度为 O(n log n),这一性能在最坏、平均和最好情况下均保持不变,因此它特别适合处理大规模数据集。
今天的代码大赏就到这里。希望通过这篇文章,你能够对 Java 实现的归并排序算法有一个更深入的理解。
如果你对其他语言实现的归并排序算法感兴趣,或者有任何关于算法的问题,欢迎在评论区留下你的足迹。
完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!
在线访问:https://www.codecopy.cn/post/0tot22
在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~