package primary_01;/** 归并排序* 1.算法实现* 2.验证算法的正确性* 3.分析算法的复杂度*/public class Merge_sort {public static void main(String[] args) {int arr []= {2,1,6,5,9,8,2020,199};sort(arr, 0, arr.length-1);for (int i : arr) {System.out.print(i+" ");}}/** 归并排序* 1.划分的过程*        mid * 2.归并的过程*      merge* 3.递归的过程*         递归的实质*/private static void sort(int[] arr,int l,int h) {if(h <= l || arr.length<2) {return;}int mid=l+((h-l)>>1);//  int mid=l+(h-l)/2;sort(arr,l,mid);sort(arr,mid+1,h);merge(arr,l,mid,h);}private static void merge(int[] arr, int l, int mid, int h) {int help [] =new int [h-l+1];int p1=l;int p2=mid+1;int index;for(index=0;p1<=mid && p2<=h ; index++) {help[index] = arr[p1] < arr[p2] ? arr[p1++] : arr[p2++];}while(p2 <= h) {help[index++]=arr[p2++];}while(p1 <= mid) {help[index++]=arr[p1++];}for(int i=0;i<help.length;i++) {arr[l++]=help[i];}}}
/*** 算法复杂度分析*       时间复杂度:O(n*logn)* master公式运用*         master公式的使用T(N) = a*T(N/b) + O(N^d)1) log(b,a) > d -> 复杂度为O(N^log(b,a)) 2) log(b,a) = d -> 复杂度为O(N^d * logN) 3) log(b,a) < d -> 复杂度为O(N^d)对于归并排序:T(N)=2*T(N/2)+O(N) 复杂度为O(N*logN)*/

归并排序 java_归并排序(Java实现)相关推荐

  1. 归并排序 java_马士兵说之归并排序

    大家对于排序应该是挺熟悉的吧,马士兵老师特意为排序出了一波视频,当然文章是转自博客园的,马士兵老师的视频观看请点击下方的了解更多 概要 本章介绍排序算法中的归并排序.内容包括: 1. 归并排序介绍 2 ...

  2. 归并排序详解(Java语言描述 萌新向)

    目录 一,归并排序简介 二,归并排序原理 三,归并排序图解 1,归并总体的图解 2,合并两个子组的流程 3,归并排序动画演示 四,归并排序代码实现与分析(Java) 1,方法的合集 2,Merge类各 ...

  3. mergesort java_归并排序详解(MergeSort)递归和非递归实现

    归并排序的概念及定义 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的.然后再把有序子序列合并为整体有序序列. 归并排序是建立 ...

  4. 归并排序(非递归,Java实现)

    归并排序(非递归):自底向上 public class MergeSort {/*** @param arr 待排序的数组* @param left 本次归并的左边界* @param mid 本次归并 ...

  5. 二路归并排序原理及JAVA实现

    归并类排序 基本思想:首先将原始无序序列划分为两个子序列,然后分别对每个子序列递归地进行排序,最后再将有序子序列合并. 归并排序基于分治策略思想.前面提到的基于分治的快速排序重在"分&quo ...

  6. 插入排序java_「Java」各类排序算法

    排序大的分类可以分为两种:内排序和外排序.在排序过程中,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序.下面讲的排序都是属于内排序.内排序有可以分为以下几类: (1) 插入 ...

  7. 算法笔记-归并排序、归并排序时间复杂度、例题

    1. 归并排序 1)整体就是一个简单递归,左边排好序.右边排好序.让其整体有序 2)让其整体有序的过程里用了外排序方法 3)利用master公式来求解时间复杂度 4)归并排序的实质,实质是减少了元素间 ...

  8. python归并排序 分词_python实现归并排序,归并排序的详细分析

    学习归并排序的过程是十分痛苦的.它并不常用,看起来时间复杂度好像是几种排序中最低的,比快排的时间复杂度还要低,但是它的执行速度不是最快的. 很多朋友不理解时间复杂度低为什么运行速度不一定快,这个不清楚 ...

  9. 内部排序-归并排序-2-路归并排序

    文字描述 假设初始序列有n个记录,则可看成是n个有序的字序列,每个字序列的长度为1,然后两两归并,得到[n/2]个长度为2或1的有序子序列:再两两归并,-, 如此重复,直到得到一个长度为n的有序序列为 ...

最新文章

  1. Java Process类的浅学习
  2. php在页面循环输出标签,自定义页面循环
  3. 《剑指offer》-斐波那契数列
  4. 如何解决Qt程序在其他电脑上无法运行的问题(Qt程序打包发布)
  5. ASP.NET Core分布式项目实战(Consent 确认逻辑实现)--学习笔记
  6. 使用xtrabackup(innobackupex)实现MySQL的热备
  7. 安卓案例:启动和停止服务
  8. 3299元起!结缘梅奔F1车队,Redmi K50电竞版发布
  9. 高效 遍历 算法_一文学会回溯算法解题技巧
  10. 【经典算法】第三回:插入排序
  11. Pycharm 主题字体推荐(亮色)
  12. 安装visio2019Pro提示报错“0xC004F017“具体解决办法
  13. 请教有关网络管理的方法
  14. 隔离式DC-DC变换器市场现状及未来发展趋势
  15. 智头条:智能家居出货量将超5亿台;美的发布智能家居操作系统;萤石DL31FS人脸锁AI卓越版发布;小米发布人脸识别智能门锁
  16. TracePro小白学习操作
  17. 基于神经网络和相关性分析的数学建模思路分享
  18. mysql及格率公式_关于mysql进行名次的排名和计算及格率的分享
  19. 苹果亮度自动调节怎么关闭_Redmi K30 Pro自动亮度调节和iPhone基本一致,安卓手机的大进步...
  20. 信息收集后的数据处理小技巧

热门文章

  1. 认识CUBA平台的CLI
  2. web 项目集成福昕_项目学生:Web服务集成
  3. spring不自动下载_Spring:自动接线或不自动接线
  4. 信守承诺:JAX-RS API的基于合同的测试
  5. atom feed_适用于Atom Feed的Spring MVC
  6. hbase regions_使用Regions ADF 11g进行Master Detail CRUD操作
  7. javaone_JavaOne 2012:非阻塞数据结构如何工作?
  8. Java A的新本地变量类型推断
  9. 使用Java将数据流式传输到HPCC
  10. 每个客户使用Jersey处理的Cookie