java归并排序(含归并排序代码)
目录
一:归并排序的思想
二:归并排序代码
三:归并排序结果
一:归并排序的思想
归并排序(Merge Sort)
当我们要排序这样一个数组的时候,归并排序法首先将这个数组分成一半。如图:
然后想办法把左边的数组给排序,右边的数组给排序,之后呢再将它们归并起来。当然了当我们对左边的数组和右边的素组进行排序的时候,再分别将左边的数组和右边的数组分成一半,然后对每一个部分先排序,再归并。如图:对于上面的每一个部分呢,我们依然是先将他们分半,再归并,如图:
分到一定细度的时候,每一个部分就只有一个元素了,那么我们此时不用排序,对他们进行一次简单的归并就好了。如图:归并到上一个层级之后继续归并,归并到更高的层级,如图:直至最后归并完成。
二:归并排序代码
package totoSort;import java.util.Arrays;public class Msort {public static void main(String[] args) {int[] arrays = new int[] {1,5,4,3,2};sort(arrays,0,arrays.length - 1);System.out.print(Arrays.toString(arrays));}public static void sort(int[] arr, int left, int right) {int[] temp = new int[arr.length];if(left >= right) {return;}int mid = (left + right)/2; // 2sort(arr,left,mid); sort(arr, mid + 1, right);int i = left;int j = mid + 1;int t = 0;while(i <= mid && j <= right) {if(arr[i] <= arr[j]) {temp[t] = arr[i];i++;t++;}else {temp[t] = arr[j];j++;t++;}}while(i <= mid) {temp[t] = arr[i];i++;t++;}while(j <= right) {temp[t] = arr[j];j++;t++;}int k = 0;int tempIndex = left;while(tempIndex <= right) {arr[tempIndex] = temp[k];k++;tempIndex++;}}
}
三:归并排序结果
java归并排序(含归并排序代码)相关推荐
- Java排序之归并排序
Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并 ...
- 归并排序原理及代码实现
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序.若将两个有序 ...
- Java排序之归并排序 1
Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并 ...
- 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法
双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法 一.理论描述 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词 ...
- 今天来谈谈Python中的各种排序总结,含实现代码
下图是各种排序方法的时间复杂度.空间复杂度和稳定性,大牛编程吧教你如何编程提升. 1.直接插入排序. 直接插入的基本思想是每一步将一个数插入到已排序的有序数列中. python代码实现: def di ...
- 统计java文件中的代码行数
统计Java代码行数工具类 -- CodeCounterUtil.java 统计指定目录下的java文件中代码行数 -- public static int getCodeNumFromFo ...
- java主窗体设计代码_java窗体设计+GUI经典代码全放送
[实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...
- python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...
前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...
- java精确除法计算,四舍五入 Java问题通用解决代码
java精确除法计算,四舍五入 Java问题通用解决代码 参考文章: (1)java精确除法计算,四舍五入 Java问题通用解决代码 (2)https://www.cnblogs.com/svenne ...
- python代码转成java_如何实现Java代码转换成python代码
之前小编告诉大家最初是学Java的,现在转向python,那对于两者之间有什么互通的嘛?其实有,比如可以将Java转成python代码,一起来看下吧. 首先给大家带来一组示例演示. Java代码如下: ...
最新文章
- Java中导入错误的jar所引发的问题
- Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from it
- 走在程序世界道路上的我___大一篇
- python质数列_现代化程序开发笔记(3)——多文件与模块
- 结构体自动化转为char数组的实现
- arcgis怎么做poi_跟着闫磊大神学ArcGIS,事半功倍
- jzoj4017-逃跑【0/1分数规划,线段树,dp】
- 重要的,是那些训练中被多次遗忘的样本
- fanuc roboguide_ROBOGUIDE软件:机器人产线输送带输送物料虚拟仿真操作
- 手把手教你入侵网站修改数据_手把手教你使用Python抓取QQ音乐数据(第四弹)...
- ASP实现AJAX的几种方式!
- 【LeetCode】【数组】题号:*498,对角线遍历
- 空间应用统计分析(回归分析)
- qt信号槽踩坑日记(信号执行一次,槽函数执行多次解决方案)
- 程序员量子力学-海森堡式BUG
- Mybatis中使用左连接查询-vo方式
- 嵌入式学习——使用STM32F103基于HAL库移植uCOS-III
- 解决鼠标不能移出视频框,切换网页不能播视频的小窍门
- mysql已启动但无法连接_MySQL无法正常启动,Navicat连接出错,解决2003问题
- API 接口批量测试
热门文章
- 读写文件操作OpenFile()
- 网站设计中常见的字体
- 如何将Excel中的一列内容合并到一起显示?
- java MySQL 查询所有子级(不包含自己)
- 三款html版女朋友表白告白代码,动态爱心表白代码,总有一款适合你,可定制表白内容
- 电子式预付费电能表对于安全校园建设的意义
- python函数知识点总结_函数总结_python函数总结_高中函数知识点总结 - 云+社区 - 腾讯云...
- python重要知识点_35个高级Python知识点总结
- 【网络协议趣谈】CDN静态和动态数据缓存
- java反编译教程_Java反编译工具 - JD-GUI 下载地址及使用手册