private void MergeSort(int[] a, int left,int right){

if (left < right){

int middle = (left+right)/2; //取中间位置

MergeSort(a,left,middle); //递归,直到被分解到的子数组中只有一个元素,返回。

MergeSort(a,middle+1,right);//递归,直到被分解到的子数组中只有一个元素,返回。

Merge(a,left,middle,right); //对两个子数组进行排序

}

}

private void Merge(int[] a,int left,int middle,int right){

int[] b = new int[(right-left)+1];

System.arraycopy(a, left, b, 0, (right-left) +1);

int ls = left - left;

int m = middle - left;

int rs = (middle + 1) - left;

/*

* 通过临时数组b对数组a中从left 到 right 的元素进行排序

*/

for (int i=left;i<=right;i++){

if (b[ls] <= b[rs]){

a[i] = b[ls];

ls++;

if (ls > m){

System.arraycopy(b, rs, a, i+1, b.length - rs - 1);

break;

}

}else{

a[i] = b[rs];

rs++;

if (rs >= b.length){

System.arraycopy(b, ls, a, i+1, m - ls + 1);

break;

}

}

}

}

注意点: 这里参数中传递的int 型数组实际传递的是数组的引用。所以在每个递归过程中数组内容一直保持更新,无需以参数的形式进行返回。

java合并并排序_典型合并排序的Java实现相关推荐

  1. java 桶排序_[图解] 桶排序

    桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...

  2. java arraylist排序_一文读懂Java集合框架

    欢迎关注微信公众号:深入浅出Java源码 概念 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们.集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表, ...

  3. arraylist java 排序_「arraylist排序」java ArrayList的两种排序方法 - seo实验室

    arraylist排序 1.ArrayList使用排序的初衷 我们知道ArrayList的好处是可以不用限定容器的大小,他会根据元素的增加自己扩大.但是存储进去的数据类型都会变成object,虽然每个 ...

  4. java 鸡尾酒排序_算法渣-排序-冒泡

    没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺:跟着算法渣一起从零学算法 定义 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 这个算法的名字由来 ...

  5. shell按照时间排序_【经典排序】希尔排序

    希尔排序 简介: 希尔排序,英文Shell's sort,是一位叫D.L.Shell的老哥在1959就提出来的算法,是<插入排序>的一种又称"缩小增量排序"(Dimin ...

  6. 希尔排序python 简书_数据结构_排序_直接插入+希尔排序

    数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...

  7. python 多关键字排序_用Python排序字​​典

    python 多关键字排序 介绍 (Introduction) In this tutorial, we are going to take a look at the various ways fo ...

  8. 合并报表软件系统_财务合并报表的基础工作

    1.完整的企业会计制度,并颁布实施 如果是上市公司,那么该备案就备案,该公告就公告.一般公司会有个财务总监手册,包括收入确认,成本计算方法,会计估计方法,减值计提依据,预算制度等等. 2.在整个集团建 ...

  9. java青蛙过河打字_趣味算法——青蛙过河(JAVA)

    青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...

最新文章

  1. 情人节|致爱丽丝……
  2. 【Android 应用开发】Android 平台 HTTP网速测试 案例 API 分析
  3. 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)
  4. 保存光谱曲线出现问题_直读光谱仪计量周期-这家好【博越仪器】
  5. dns组件能够删除后恢复
  6. AUTOMAKE\AUTOCONF
  7. wamp下Apache2.4.x局域网访问403的解决办法
  8. windows 2003 远程桌面无法使用剪贴板共享纯文本的解决方法(亲测可用)
  9. 计算机设备管理器命令,打开设备管理器的命令,教你一分钟学会最简单
  10. python微信转账记录_python 处理微信对账单数据的实例代码
  11. 2021年上半年软考真题及答案解析汇总
  12. 【毕业设计】基于STM32的自动加油站加油系统 -物联网 单片机 嵌入式
  13. 面板数据、工具变量选择和Hausman检验的若干问题
  14. 《Django开发教程》1.2 在ubuntu上安装Django
  15. Zigbee基础理论知识总结
  16. 2020最实用115个Java面试题及面向对象的能力汇总合集
  17. 【遇见Doris】Apache Doris 在京东广告平台的应用
  18. i5 11320h怎么样 相当于什么水平
  19. 客户端dmesg_linux命令行安装oracle客户端 - 卡饭网
  20. YII2.0的I18N/L10N是干什么的?是如何工作的?底层原理是什么?

热门文章

  1. Zookeeper的一些概念
  2. 【Debug探索团队公告】Debug探索团队,邀请您的加入
  3. Linux中的Java类,Java基础入门学习-Java中类的属性
  4. react html编辑器,在线代码编辑器 Codemirror 的轻量级 React 组件
  5. TurboMail邮件服务器腾云驾务云化邮件办公
  6. 基于php的织梦cms新闻发布,DedeCms
  7. 火星舱如何备份oracle_倒计时!火星,我们来了
  8. OSCache操作详解+标签使用
  9. Python包管理整理:setuptool管理python相关的包
  10. 北大AI第八讲 李航 自然语言处理的现实与挑战