java算法----排序----(5)归并排序
package log;
import java.util.Arrays;
public class Test4 {
/**
* java算法---归并排序
*
* @param args
*/
public static void main(String[] args) {
// 需要排序的数组
int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 };
// 循环输出该数组内容
System.out.println("排序之前:");
for (int a : arr) {
System.out.print(a + "\t");
}
System.out.println();
sort(arr, 0, arr.length - 1);
// 循环输出该数组内容
System.out.println("排序之后:");
for (int a : arr) {
System.out.print(a + "\t");
}
System.out.println();
}
public static void merge(int[] list, int left, int center, int right) {
int[] tempArr = new int[list.length];
int mid = center + 1;
int third = left;
int temp = left;
while (left <= center && mid <= right) {
if (list[left] <= list[mid]) {
tempArr[third++] = list[left++];
} else {
tempArr[third++] = list[mid++];
}
}
while (mid <= right) {
tempArr[third++] = list[mid++];
}
while (left <= center) {
tempArr[third++] = list[left++];
}
while (temp <= right) {
list[temp] = tempArr[temp++];
}
System.out.println(Arrays.toString(list));
}
public static void sort(int[] list, int left, int right) {
if (left < right) {
int center = (left + right) / 2;
sort(list, left, center);
sort(list, center + 1, right);
merge(list, left, center, right);
}
}
}
下面是控制台的输出结果

归并排序是将两个或者两个以上有序表合并成一个新的有序表,即把带排序序列分为若干个子序列,每个子序列都是有序的。然后再把有序子序列合并为整体有序序列。
java算法----排序----(5)归并排序的更多相关文章
- 疯狂的Java算法——插入排序,归并排序以及并行归并排序
从古至今的难题 在IT届有一道百算不厌其烦的题,俗称排序.不管是你参加BAT等高端笔试,亦或是藏匿于街头小巷的草根笔试,都会经常见到这样一道百年难得一解的问题. 今天LZ有幸与各位分享一下算法届的草根 ...
- java算法----排序----(6)希尔排序(最小增量排序)
package log; public class Test4 { /** * java算法---希尔排序(最小增量排序) * * @param args */ public static void ...
- java算法----排序----(4)快速排序
package log; public class Test4 { /** * java算法---快速排序 * * @param args */ public static void main(Str ...
- java算法----排序----(3)冒泡排序
package log; public class Test4 { /** * java算法---冒泡排序 * * @param args */ public static void main(Str ...
- java算法----排序----(2)选择排序
package log; public class Test4 { /** * java算法---选择排序 * * @param args */ public static void main(Str ...
- java算法----排序----(1)插入排序
package log; public class Test4 { /** * java算法---插入排序 * * @param args */ public static void main(Str ...
- java算法----排序----(7)堆排序
package log; import java.util.Arrays; public class Test4 { /** * 堆排序 * * @param args */ public stati ...
- Java常见排序算法之归并排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- 排序算法入门之归并排序(java实现)
归并排序是采用分治法的典型应用. 参考<数据结构与算法分析-Java语言描述> 归并排序其实要做两件事: (1)"分解"--将序列每次折半划分. (2)"合并 ...
随机推荐
- Git应用--04遇到冲突解决办法git stash(转载)
git merge git pull时候遇到冲突解决办法git stash https://www.cnblogs.com/juandx/p/5362723.html 在使用git pull代码时,经 ...
- Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
- JavaScript大杂烩11 - 理解事件驱动
前面我们回顾了前端JavaScript只干的两件事:操作BOM与操作DOM,那么什么时候去干这些事呢?答案是需要干的时候去干.那么什么时候是需要干的时候呢?答案是事件被触发的时候.这就是通常所说的“事 ...
- 心迹 使用说明&功能展示
下载地址 心迹.apk 更新于2018.8.9 11:47 测试账号:用户名testing,密码testing 项目地址 GitHub 注册&登录 第一次使用心迹app时,必须进行注册,以便区 ...
- 使用openssl在windows 10下本地xampp配置https开发环境
安装win64OpenSSL-1_1_0j后重新启动:以管理员权限启动powershell; 执行以下命令 set OPENSSL_CONF=c:\xampp\apache\conf\openssl. ...
- python第六十天-----RabbitMQ
RabbitMQ消息队列:默认为消息轮循模式,按client端启动是顺序接收 server端 import pika connection = pika.BlockingConnection(pika ...
- SMP多核启动
在 Linux系统中,对于多核的ARM芯片而言,在Biotron代码中,每个CPU都会识别自身ID,如果ID是0,则引导Bootloader和 Linux内核执行,如果ID不是0,则Biotron一般 ...
- [MapReduce_5] MapReduce 中的 Combiner 组件应用
0. 说明 Combiner 介绍 && 在 MapReduce 中的应用 1. 介绍 Combiner: Map 端的 Reduce,有自己的使用场景 在相同 Key 过多的情况下 ...
- PHP 服务器及TP5框架遇到的几个错误
一.Call to undefined function imagecreatefrompng(): LAMP环境搭建的博客,在提交内容的时候TP5框架报了一个错误,Call to undefined ...
- Beta冲刺! Day3 - 砍柴
Beta冲刺! Day3 - 砍柴 今日已完成 晨瑶:追查进度:确定推荐算法 昭锡:查看Note模块的处理逻辑.查找主页UI的解决方案 永盛:数据库的大量整合和新建,备份和还原:完成部分新的逻辑 立强 ...