java实现归并排序算法
更新时间:2015年04月09日 11:21:02 投稿:hebedich
归并排序:是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 本文我们就来详细的探讨下。
归并排序算法思想:
分而治之(divide - conquer);每个递归过程涉及三个步骤
第一, 分解: 把待排序的 n 个元素的序列分解成两个子序列, 每个子序列包括 n/2 个元素.
第二, 治理: 对每个子序列分别调用归并排序MergeSort, 进行递归操作
第三, 合并: 合并两个排好序的子序列,生成排序结果.
public static void mergeSort(int[] a, int[] tmp, int left, int right) {
if (left < right) {
int mid = left + (right - left) / 2;
mergeSort(a, tmp, left, mid);// 左排序
mergeSort(a, tmp, mid + 1, right);// 右排序
merge(a, tmp, left, mid + 1, right);// 左右合并
}
}
public static void merge(int[] a, int[] tmp, int left, int rightPos,
int right) {
int leftEnd = rightPos - 1;
int tmpPos = left;
int num = right - left + 1;
while (left <= leftEnd && rightPos <= right) {
if (a[left] < a[rightPos]) {
tmp[tmpPos++] = a[left++];
} else {
tmp[tmpPos++] = a[rightPos++];
}
}
while (left <= leftEnd) {
tmp[tmpPos++] = a[left++];
}
while (rightPos <= right) {
tmp[tmpPos++] = a[rightPos++];
}
for (int i = 0; i < num; i++, right--) {
a[right] = tmp[right];
}
}
归并算法示意图:

以上所述就是本文的全部内容了,希望大家能够喜欢。
相关文章
response.sendRedirect()实现重定向(页面跳转)
在Java web开发中,使用response.sendRedirect()可实现重定向功能。本文将介绍如何使用该方法进行页面跳转,以及该方法的使用场景和注意事项,感兴趣的可以了解一下2023-04-04
spring中BeanPostProcessor的作用和使用注意事项
在Spring框架中,BeanPostProcessor 是一个核心扩展接口,允许你在Bean实例化的过程中插入自定义逻辑,本文给大家介绍spring中BeanPostProcessor的作用,感兴趣的朋友一起看看吧2025-04-04
SpringBoot之RestTemplate在URL中转义字符的问题
这篇文章主要介绍了SpringBoot之RestTemplate在URL中转义字符的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-06-06
Java利用httpclient通过get、post方式调用https接口的方法
这篇文章主要介绍了Java利用httpclient通过get、post方式调用https接口的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-02-02
spring boot validation参数校验实例分析
这篇文章主要介绍了spring boot validation参数校验,结合实例形式分析了spring boot validation进行数据有效性验证的相关操作技巧,需要的朋友可以参考下2019-11-11


最新评论