返回顶部
首页 > 资讯 > 精选 >java中归并排序及Master公式是什么
  • 763
分享到

java中归并排序及Master公式是什么

2023-06-26 03:06:11 763人浏览 薄情痞子
摘要

java中归并排序及Master公式是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。基本思想归并排序采取分治的思想进行排序,借用一张图片说明一下将n个元素从中间切开,分

java中归并排序及Master公式是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

基本思想

归并排序采取分治的思想进行排序,借用一张图片说明一下

java中归并排序及Master公式是什么

将n个元素从中间切开,分成两部分。(左边可能比右边多1个数) 将步骤1分成的两部分,再分别进行递归分解。直到所有部分的元素个数都为1。 从最底层开始逐步合并两个排好序的数列。
优点在于,分治之后,合并排序的过程时间复杂度是O(N)(只需要扫描一遍就可以将两个有序的数组合并成一个有序数组)

实现

  public static void MergeSort(int[] arr,int l , int r) {        if (l == r || r < 0){            return;        }        int middle = l+(r-l)/2; //取中值,可以防止达到Integer.MaxValue 溢出        MergeSort(arr,l,middle);        MergeSort(arr,middle+1,r);        sort(arr,l,middle,r);    }        private static void sort(int[] arr, int l, int middle, int r) {        int[] temp = new int[arr.length];        System.arraycopy(arr, 0, temp, 0, arr.length);        int right_first = middle+1;        int tempIndex = l;        while (l <= middle && right_first <= r){            if (temp[tempIndex] < temp[right_first]){                arr[l++] = temp[tempIndex++];            }else {                arr[l++] = temp[right_first++];            }        }        while (tempIndex <= middle){            arr[l++] = temp[tempIndex++];        }        while (right_first <= r ){            arr[l++] = temp[right_first++];        }    }

对数器验证

我们可以写个对数器,使用暴力排序的方式验证我们的排序方法是否准确

   //生成1-100内随机数组   public static int[] getParamArrays(){        int[] result = new int[(int) (Math.random() * 100)];        //随机生成数        for (int i = 0; i < result.length; i++) {            result[i] = (int) (Math.random() * 100);        }        return result;    }    public static void main(String[] args){        for (int i = 0; i < 1000000; i++) {            int[] nums = getParamArrays();            int[] temp = nums;            MergeSort(nums,0,nums.length-1);            Arrays.sort(temp);            //通过自定义比较次数,对随机数组进行排序验证正确性            if (!nums.equals(temp)){                System.out.println("wrong");            }        }        System.out.println("end");    }

递归时间复杂度计算 Master 公式

形如
T(N) = a * T(N/b) + O(N^d)(其中的a、b、d都是常数)
的递归函数,可以直接通过Master公式来确定时间复杂度
如果 log(b,a) < d,复杂度为O(N^d)
如果 log(b,a) > d,复杂度为O(N^log(b,a))
如果 log(b,a) == d,复杂度为O(N^d * logN)
此公式适用于子递归规模相等的情况下

a表示递归的次数也就是生成的子问题数,b表示每次递归是原来的1/b之一个规模,O(N^d) 表示分解和合并所要花费的时间之和(除开递归的复杂度)
此处就是 T(N)= 2*T(N/2)+O(N^1) 适用于第三种情况 复杂度为 O(nlogn)

关于java中归并排序及Master公式是什么问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网精选频道了解更多相关知识。

--结束END--

本文标题: java中归并排序及Master公式是什么

本文链接: https://lsjlt.com/news/306573.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java中归并排序及Master公式是什么
    java中归并排序及Master公式是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。基本思想归并排序采取分治的思想进行排序,借用一张图片说明一下将n个元素从中间切开,分...
    99+
    2023-06-26
  • java中归并排序和Master公式详解
    目录基本思想实现对数器验证递归时间复杂度计算 Master 公式总结基本思想 归并排序采取分治的思想进行排序,借用一张图片说明一下 将n个元素从中间切开,分成两部分。(左边可能比右...
    99+
    2024-04-02
  • 什么是Java归并排序
    本篇内容主要讲解“什么是Java归并排序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“什么是Java归并排序”吧!基本介绍归并排序(merge-sort)是利用归并的思想实现的排序方法,该算法采...
    99+
    2023-06-15
  • python中什么是归并排序
    本篇文章为大家展示了python中什么是归并排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言...
    99+
    2023-06-14
  • python中的归并排序是什么
    本篇内容介绍了“python中的归并排序是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!说明归并排序是一种高效、稳定的合并运算排序算法,...
    99+
    2023-06-20
  • python中归并排序的原理是什么
    本篇文章给大家分享的是有关python中归并排序的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、基本思路归纳排序是采用分治法的非常典型的应用。归并排序的思想是先归...
    99+
    2023-06-15
  • python归并排序的方法是什么
    归并排序是一种分治算法,其基本思想是将一个大问题分解成小问题逐步解决,然后将小问题的解合并成最终的解。具体的归并排序算法步骤如下:1...
    99+
    2023-08-15
    python
  • Java快速排序与归并排序及基数排序图解示例
    目录一、快速排序1、基本介绍2、代码实现二、归并排序1、基本介绍2、代码实现三、基数排序1、基本介绍2、代码实现一、快速排序 1、基本介绍 以上面的数组为例分析快速排序。 首先要...
    99+
    2024-04-02
  • Java归并排序和快速排序怎么实现
    本篇内容介绍了“Java归并排序和快速排序怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!归并排序// 归并排序 ...
    99+
    2023-06-04
  • Java的堆排序、快速排序、归并排序怎么实现
    本文小编为大家详细介绍“Java的堆排序、快速排序、归并排序怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java的堆排序、快速排序、归并排序怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。堆排序...
    99+
    2023-06-26
  • python中归并排序和快速排序有什么区别
    python中归并排序和快速排序有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在预期情况下的快速排序和归并排序时间复杂度都一样, 在空间复杂度上,没使...
    99+
    2023-06-15
  • Java归并排序代码怎么写
    本篇内容主要讲解“Java归并排序代码怎么写”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java归并排序代码怎么写”吧!归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,...
    99+
    2023-06-17
  • java怎么实现归并排序算法
    归并排序算法的实现步骤如下:1. 首先,实现一个归并操作函数。该函数将两个已排序的数组合并为一个新的已排序的数组。例如:```jav...
    99+
    2023-08-15
    java
  • 归并排序的迭代实现方法是什么
    本篇内容介绍了“归并排序的迭代实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!归并排序的迭代实...
    99+
    2024-04-02
  • 怎么在java 项目中使用归并排序算法
    怎么在java 项目中使用归并排序算法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。归并排序     &nbs...
    99+
    2023-05-31
    java 归并排序 ava
  • 在java项目中实现归并排序的方法
    在java项目中实现归并排序的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。归并排序算法:假设初始序列含有n个记录,首先将这n个记录看成n个有序的子序列,每个子序列长度为1...
    99+
    2023-05-31
    java 归并排序 ava
  • java中基数排序是什么
    这篇文章主要介绍java中基数排序是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!基数排序基数排序 (Radix Sort) 是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比...
    99+
    2023-06-19
  • 利用java 怎么实现一个归并排序算法
    本篇文章给大家分享的是有关利用java 怎么实现一个归并排序算法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 归并排序算法,顾名思义,是一种先分再合的算法,其算法思...
    99+
    2023-05-31
    java 归并排序算法 ava
  • java中快速排序法是什么
    这篇文章将为大家详细讲解有关java中快速排序法是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。快速排序法:顾名思议,快速排序法是实践中的一种快速的排序算法,在c++或对java基本类型的排序中特别有...
    99+
    2023-06-29
  • 图解Java中归并排序算法的原理与实现
    目录一、基本思想二、算法分析1、算法描述2、过程分析3、动图演示三、算法实现一、基本思想 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and C...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作