Java算法中的归并排序算法代码实现
更新时间:2023年12月12日 08:41:12 作者:warybee
这篇文章主要介绍了Java算法中的归并排序算法代码实现,归并排序使用的是分治思想(Divide and Conquer),分治,顾名思义,就是分而治之,是将一个大问题分解成小的子问题来解决,需要的朋友可以参考下
Java归并排序算法
1、排序原理
归并排序使用的是分治思想(Divide and Conquer),分治,顾名思义,就是分而治之,是将一个大问题分解成小的子问题来解决。小的子问题解决了,大问题也就解决了。
归并排序的核心思想是:如果要排序一个数组,先把数组从中间分成前后两部分,然后再分解,直到每个子序对中只剩一个元素,最后通过递归,层层合并。

2、代码实现
public static int[] mergeSort(int[] array) { if (array.length <=1) return array; //取数组的中间位置 int mid = array.length>>1; //数组拆分 int[] left = Arrays.copyOfRange(array, 0, mid); int[] right = Arrays.copyOfRange(array, mid, array.length); //递归调用 int[] result=merge(mergeSort(left), mergeSort(right)); return result; } /** * 合并, * @param left 拆分后左侧数组 * @param right 拆分后右侧数组 * @return */ public static int[] merge(int[] left, int[] right) { int[] result = new int[left.length + right.length]; int i=0,j=0; // i用来标识左侧数组 , j用来标识右侧数组 for (int index = 0; index < result.length; index++) { //如果i 大于左侧数组,说明左侧已经没有多余的数组,将剩余的数据拷贝到临时数组 if (i >= left.length) { result[index] = right[j++]; } //如果j大于右侧数组,说明右侧已经没有多余的数组,将剩余的数据拷贝到临时数组 else if (j >= right.length) { result[index] = left[i++]; } //比较两个数组,如果左侧大于右侧数组,就将右侧数组放入到临时数组 else if (left[i] > right[j]) { result[index] = right[j++]; } else{//就将左侧数组放入到临时数组 result[index] = left[i++]; } } return result; }到此这篇关于Java算法中的归并排序算法代码实现的文章就介绍到这了,更多相关Java归并排序算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java如何通过反射获取Constructor、Field、Method对象
反射指的是对象的反向处理操作,根据对象取得对象的来源信息,在反射的世界里面,看重的不再是一个对象,而是对象身后的组成,下面这篇文章主要给大家介绍了关于Java如何通过反射获取Constructor、Field、Method对象的相关资料,需要的朋友可以参考下2022-06-06
关于Springboot打成JAR包后读取外部配置文件的问题
这篇文章主要介绍了关于Springboot打成JAR包后读取外部配置文件的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-11-11
浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题
下面小编就为大家带来一篇浅谈图片上传利用request.getInputStream()获取文件流时遇到的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-11-11


最新评论