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归并排序算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Cloud实现微服务调用的负载均衡(详解)

    Spring Cloud实现微服务调用的负载均衡(详解)

    负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行,根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡,本文给大家介绍Spring Cloud实现微服务调用的负载均衡的相关知识,感兴趣的朋友一起看看吧
    2024-03-03
  • Java实现JSON与XML相互转换的简明教程

    Java实现JSON与XML相互转换的简明教程

    Java实现复杂数据结构(如嵌套对象、数组)在 JSON 与 XML 之间的相互转换,可以使用 Jackson 和 Jackson XML 扩展库来完成,Jackson 是一个流行的 JSON 处理库,通过 Jackson 的 XML 扩展库,可以实现 JSON 和 XML 之间的转换,需要的朋友可以参考下
    2024-08-08
  • Java基础必学TreeSet集合

    Java基础必学TreeSet集合

    这篇文章主要介绍了Java必学基础TreeSet集合,TreeSet集合实现了SortedSet接口, 可以对集合中元素进行自然排序, 要求集合中的元素必须是可比较的。下文详细介绍需要的朋友可以参考一下
    2022-04-04
  • 微信、支付宝二码合一扫码支付实现思路(java)

    微信、支付宝二码合一扫码支付实现思路(java)

    这篇文章主要为大家详细介绍了微信、支付宝二码合一扫码支付实现思路,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • JVM处理未捕获异常的方法详解

    JVM处理未捕获异常的方法详解

    这篇文章主要给大家介绍了关于JVM处理未捕获异常的相关资料,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-01-01
  • spring启动后保证创建的对象不被垃圾回收器回收

    spring启动后保证创建的对象不被垃圾回收器回收

    最近看到一个问题是,spring在启动后如何保证创建的对象不被垃圾回收器回收?。所以本文结合jvm的垃圾回收机制和spring中的源代码做出自己的一点猜测。有需要的朋友们可以参考借鉴。
    2016-09-09
  • springboot jpa 延迟加载问题的2种解决

    springboot jpa 延迟加载问题的2种解决

    这篇文章主要介绍了springboot jpa 延迟加载问题的2种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • springboot docker jenkins 自动化部署并上传镜像的步骤详解

    springboot docker jenkins 自动化部署并上传镜像的步骤详解

    这篇文章主要介绍了springboot docker jenkins 自动化部署并上传镜像的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • Java中redis的基本类型

    Java中redis的基本类型

    这篇文章主要介绍了Java中redis的基本类型,redis存储数据的基本类型有:字符串类型、散列类型、列表类型、集合类型、有序集合类型,下面我们对其中几个进行简单介绍,需要的小伙伴可以参考一下
    2022-03-03
  • Java猴子吃桃问题

    Java猴子吃桃问题

    这篇文章主要介绍了Java猴子吃桃问题,采取逆向思维的方法,从后往前推断,需要的朋友可以参考下
    2017-02-02

最新评论