归并算法

/*** 归并排序:时间复杂度为olnN*/public class mergeSort {public static void merge_sort(int[] arr, int l, int r){//如果 l >= r 数据不合法,或者就一个数据,本身就有序if (l >= r)return;//开始进行排序,排序arr中的所欲元素,可以用分治法,先排序数组中,左边的数据,使之有序,右边的数据,使之有序int mid = (l + r)/2;merge_sort(arr, l, mid);    //先使之左边的有序merge_sort(arr, mid+1, r);  //再使之右边的有序merge(arr, l, r, mid);          //左边和右边的都有序了,把左边和右边有序的数据变成整体有序的数据}private static void merge(int[] arr, int l, int r, int mid) {//开辟一个辅助空间,用来存取整体有序的数据int[] newArr = new int[r-l+1];int n = 0;int p1 = l;int p2 = mid + 1;while(p1 <= mid && p2 <= r){        //l指向左边的数据开始位置,j指向右边的数据的开始位置,并且不越界的情况下if (arr[p1] <= arr[p2]) {//左边的比较小newArr[n++] = arr[p1++]; //把l位置上的数据放到新的数组中}else{newArr[n++] = arr[p2++];}}//当条件不满足的时候while(p1 <= mid){newArr[n++] = arr[p1++];}while(p2 <= r){newArr[n++] = arr[p2++];}for (int i = 0; i < newArr.length; i++){arr[l+i] = newArr[i];}}public static void main(String[] args) {int[] arr = {24,1,5,4,7,2,9,10};//例如,想要使arr数组中1~8中有序,那么调用函数merge_sort(arr, 0, 7);for(int i = 0; i < arr.length; i++){System.out.println(arr[i]);}}
}

归并算法(java的简单实现)相关推荐

  1. 归并排序时间复杂度_一文带你读懂排序算法(四):归并算法

    点击上方蓝字关注我们 归并排序的基本思想核心是分治,就是把一个复杂的问题分成两个或多个相同或相似的子问题,然后把子问题分成更小的子问题,直到子问题可以简单的直接求解,最原问题的解就是子问题解的合并.算 ...

  2. java实现归并算法

    这个程序不是我原创的,是我在学习别人的程序上改的,想重新写出来的原因就是:作为用户我调用一个工具,我给你个数组,你给我个排好的数组就好了,还要输入起始点和终点显得很不智能.(其实我就是把一行代码封装到 ...

  3. JAVA中简单的MD5算法——MD5Utils

    文章目录 MD5信息摘要算法 Java中简单的MD5加密类MD5Utils 今日推歌 MD5信息摘要算法 MD5(Message Digest) 它是一种哈希算法,不是一种加密算法,任何长度的任意内容 ...

  4. 归并算法(Java)

    归并操作(merge),也叫归并算法,指的是将两个顺序序列合并成一个顺序序列的方法. 把长度为n的输入序列分成两个长度为n/2的子序列: 对这两个子序列分别采用归并排序: 将两个排序好的子序列合并成一 ...

  5. 基于Fork/Join框架实现对大型浮点数数组排序(归并算法和插入排序算法)

    分支/合并框架 说明 重点是那个浮点数数组排序的例子,从主函数展开,根据序号看 1.GitHub代码欢迎star.你们轻轻的一点,对我鼓励特大,我有一个习惯,看完别人的文章是会点赞的. 2.个人认为学 ...

  6. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  7. 基于Fork/Join框架实现对大型浮点数数组排序(归并算法和插入排序算法) 1

    分支/合并框架 说明 重点是那个浮点数数组排序的例子,从主函数展开,根据序号看 1.GitHub代码欢迎star.你们轻轻的一点,对我鼓励特大,我有一个习惯,看完别人的文章是会点赞的. 2.个人认为学 ...

  8. python归并算法_python归并算法

    python数据结构与算法总结 python常用的数据结构与算法就分享到此处,本月涉及数据结构与算法的内容有如下文章: <数据结构和算法对python意味着什么?> <顺序表数据结构 ...

  9. 由归并算法引申出来的其他问题

    前言: 上一节刚讲过归并算法是排序算法中比较少见的一种时间复杂度为:θ(nlgn)的算法.而归并算法之所以快的原因在于它用了分治的思想,现实生活中有很多需要用到分治思想解决的问题,下面就举两个例子. ...

  10. java 哈希一致算法_一致哈希算法Java实现

    一致哈希算法(Consistent Hashing Algorithms)是一个分布式系统中常用的算法.传统的Hash算法当槽位(Slot)增减时,面临所有数据重新部署的问题,而一致哈希算法确可以保证 ...

最新文章

  1. centos6卸载mysql服务器_CentOS6.5下卸载自带的MySQL数据库安装MySQL5.6
  2. 数据结构与算法(6-1)树的存储(树的双亲表示、树的孩子表示及树的双亲孩子表示)
  3. Redis 敢在线上做Keys正则匹配操作!你可以离职了!
  4. OO第一单元作业总结
  5. Snow White,摘自iOS应用Snow White and more stories
  6. Tuomas Pirinen:创造游戏人物的8个方法
  7. 好记性不如烂笔头,记录几个常用的Linux操作
  8. linux 重定位arm,Arm linxu启动过程分析(一)
  9. 吴恩达机器学习作业 6.支持向量机
  10. Wmware安装Centos7教程
  11. idea java api_intellij idea怎么设置java帮助文档(示例代码)
  12. 数据库还原的多种方式
  13. 数据库变为可疑_SQL Server 2008R2 数据库出现“可疑”导致无法访问解决办法
  14. Magnific Popup – 免费的响应式 jQuery Lightbox 插件
  15. 如何在知网直接下载PDF格式的硕博士论文
  16. Gartner到底怎么回事?
  17. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-TwinCAT自带的找原点功能块MC_Home怎么用
  18. 鲁宾逊微积分与“知识共享”,携手相伴进入中国
  19. 分类效果评价(机器学习)
  20. dom---认识dom和dom的常用方法

热门文章

  1. Flash Builder 4.7 正式版下载、破解
  2. Springboot中使用Junit5(Jupiter)和Mockito
  3. winhex 比较详细的图文使用教程
  4. CSRF跨站请求伪造漏洞修复
  5. mysql 间隙锁 的范围_mysql间隙锁
  6. 阿里云短信验证码后端
  7. 计算机画图工具介绍PPT,怎么用思维导图制作PPT课件,迅捷画图软件讲解
  8. 使用Graghics2D实现证书签字盖章功能总结
  9. 探索艾利特机器人丨EC66在物流行业的应用
  10. Android基于在线地图的轨迹跟踪服务