java合并并排序_典型合并排序的Java实现
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实现相关推荐
- java 桶排序_[图解] 桶排序
桶排序是一种排序的思想,其实现包括计数排序和基数排序两种,冒泡排序.选择排序.插入排序.归并排序.快速排序和堆排序都是基于比较的排序,而桶排序提出了一种新的思路,即基于数据状态的排序. 1. 桶排序的 ...
- java arraylist排序_一文读懂Java集合框架
欢迎关注微信公众号:深入浅出Java源码 概念 Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们.集合框架被设计成要满足以下几个目标. 该框架必须是高性能的.基本集合(动态数组,链表, ...
- arraylist java 排序_「arraylist排序」java ArrayList的两种排序方法 - seo实验室
arraylist排序 1.ArrayList使用排序的初衷 我们知道ArrayList的好处是可以不用限定容器的大小,他会根据元素的增加自己扩大.但是存储进去的数据类型都会变成object,虽然每个 ...
- java 鸡尾酒排序_算法渣-排序-冒泡
没有一身好内功,招式再多都是空;算法绝对是防身必备,面试时更是不可或缺:跟着算法渣一起从零学算法 定义 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法. 这个算法的名字由来 ...
- shell按照时间排序_【经典排序】希尔排序
希尔排序 简介: 希尔排序,英文Shell's sort,是一位叫D.L.Shell的老哥在1959就提出来的算法,是<插入排序>的一种又称"缩小增量排序"(Dimin ...
- 希尔排序python 简书_数据结构_排序_直接插入+希尔排序
数据结构_排序_直接插入排序+希尔排序 其实主要是为了讲述希尔排序,不过插入排序是希尔排序的基础,因此先来讲直接插入排序. 一.直接插入排序 1.原理 下标 0 1 2 3 4 5 6 7 8 -- ...
- python 多关键字排序_用Python排序字典
python 多关键字排序 介绍 (Introduction) In this tutorial, we are going to take a look at the various ways fo ...
- 合并报表软件系统_财务合并报表的基础工作
1.完整的企业会计制度,并颁布实施 如果是上市公司,那么该备案就备案,该公告就公告.一般公司会有个财务总监手册,包括收入确认,成本计算方法,会计估计方法,减值计提依据,预算制度等等. 2.在整个集团建 ...
- java青蛙过河打字_趣味算法——青蛙过河(JAVA)
青蛙过河是一个非常有趣的智力游戏,其大意如下: 一条河之间有若干个石块间隔,有两队青蛙在过河,每队有3只青蛙,这些青蛙只能向前移动,不能向后移动,且一次只能有一只青蛙向前移动.在移动过程中,青蛙可以向 ...
最新文章
- 情人节|致爱丽丝……
- 【Android 应用开发】Android 平台 HTTP网速测试 案例 API 分析
- 鸟哥的Linux私房菜(基础篇)- 第十六章、例行性工作排程 (crontab)
- 保存光谱曲线出现问题_直读光谱仪计量周期-这家好【博越仪器】
- dns组件能够删除后恢复
- AUTOMAKE\AUTOCONF
- wamp下Apache2.4.x局域网访问403的解决办法
- windows 2003 远程桌面无法使用剪贴板共享纯文本的解决方法(亲测可用)
- 计算机设备管理器命令,打开设备管理器的命令,教你一分钟学会最简单
- python微信转账记录_python 处理微信对账单数据的实例代码
- 2021年上半年软考真题及答案解析汇总
- 【毕业设计】基于STM32的自动加油站加油系统 -物联网 单片机 嵌入式
- 面板数据、工具变量选择和Hausman检验的若干问题
- 《Django开发教程》1.2 在ubuntu上安装Django
- Zigbee基础理论知识总结
- 2020最实用115个Java面试题及面向对象的能力汇总合集
- 【遇见Doris】Apache Doris 在京东广告平台的应用
- i5 11320h怎么样 相当于什么水平
- 客户端dmesg_linux命令行安装oracle客户端 - 卡饭网
- YII2.0的I18N/L10N是干什么的?是如何工作的?底层原理是什么?
热门文章
- Zookeeper的一些概念
- 【Debug探索团队公告】Debug探索团队,邀请您的加入
- Linux中的Java类,Java基础入门学习-Java中类的属性
- react html编辑器,在线代码编辑器 Codemirror 的轻量级 React 组件
- TurboMail邮件服务器腾云驾务云化邮件办公
- 基于php的织梦cms新闻发布,DedeCms
- 火星舱如何备份oracle_倒计时!火星,我们来了
- OSCache操作详解+标签使用
- Python包管理整理:setuptool管理python相关的包
- 北大AI第八讲 李航 自然语言处理的现实与挑战