目录

一:归并排序的思想

二:归并排序代码

三:归并排序结果​


一:归并排序的思想

归并排序(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归并排序(含归并排序代码)相关推荐

  1. Java排序之归并排序

    Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并 ...

  2. 归并排序原理及代码实现

            归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即先使每个子序列有序,再使子序列段间有序.若将两个有序 ...

  3. Java排序之归并排序 1

    Java排序之归并排序 1. 简介 归并排序的算法是将多个有序数据表合并成一个有序数据表.如果参与合并的只有两个有序表,则成为二路合并.对于一个原始的待排序数列,往往可以通过分割的方法来归结为多路合并 ...

  4. 双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法

    双向最大匹配算法(含完整代码实现,ui界面)正向最大匹配算法,逆向最大匹配算法 一.理论描述 中文分词(Chinese Word Segmentation) 指的是将一个汉字序列切分成一个一个单独的词 ...

  5. 今天来谈谈Python中的各种排序总结,含实现代码

    下图是各种排序方法的时间复杂度.空间复杂度和稳定性,大牛编程吧教你如何编程提升. 1.直接插入排序. 直接插入的基本思想是每一步将一个数插入到已排序的有序数列中. python代码实现: def di ...

  6. 统计java文件中的代码行数

    统计Java代码行数工具类  --  CodeCounterUtil.java 统计指定目录下的java文件中代码行数  --  public static int  getCodeNumFromFo ...

  7. java主窗体设计代码_java窗体设计+GUI经典代码全放送

    [实例简介] java窗体设计经典代码,手把手叫你如何设计java窗体,编写应用程序. [实例截图] [核心代码] 57641e3b-d82c-4f28-bb29-35f951c1158d └── j ...

  8. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  9. java精确除法计算,四舍五入 Java问题通用解决代码

    java精确除法计算,四舍五入 Java问题通用解决代码 参考文章: (1)java精确除法计算,四舍五入 Java问题通用解决代码 (2)https://www.cnblogs.com/svenne ...

  10. python代码转成java_如何实现Java代码转换成python代码

    之前小编告诉大家最初是学Java的,现在转向python,那对于两者之间有什么互通的嘛?其实有,比如可以将Java转成python代码,一起来看下吧. 首先给大家带来一组示例演示. Java代码如下: ...

最新文章

  1. Java中导入错误的jar所引发的问题
  2. Pandas中兼并数组和字典功能的Series 2013-03-24 11:24:00 分类: Python/Ruby In [2]: # 这段代码用于并排显示多个Series对象 from it
  3. 走在程序世界道路上的我___大一篇
  4. python质数列_现代化程序开发笔记(3)——多文件与模块
  5. 结构体自动化转为char数组的实现
  6. arcgis怎么做poi_跟着闫磊大神学ArcGIS,事半功倍
  7. jzoj4017-逃跑【0/1分数规划,线段树,dp】
  8. 重要的,是那些训练中被多次遗忘的样本
  9. fanuc roboguide_ROBOGUIDE软件:机器人产线输送带输送物料虚拟仿真操作
  10. 手把手教你入侵网站修改数据_手把手教你使用Python抓取QQ音乐数据(第四弹)...
  11. ASP实现AJAX的几种方式!
  12. 【LeetCode】【数组】题号:*498,对角线遍历
  13. 空间应用统计分析(回归分析)
  14. qt信号槽踩坑日记(信号执行一次,槽函数执行多次解决方案)
  15. 程序员量子力学-海森堡式BUG
  16. Mybatis中使用左连接查询-vo方式
  17. 嵌入式学习——使用STM32F103基于HAL库移植uCOS-III
  18. 解决鼠标不能移出视频框,切换网页不能播视频的小窍门
  19. mysql已启动但无法连接_MySQL无法正常启动,Navicat连接出错,解决2003问题
  20. API 接口批量测试

热门文章

  1. 读写文件操作OpenFile()
  2. 网站设计中常见的字体
  3. 如何将Excel中的一列内容合并到一起显示?
  4. java MySQL 查询所有子级(不包含自己)
  5. 三款html版女朋友表白告白代码,动态爱心表白代码,总有一款适合你,可定制表白内容
  6. 电子式预付费电能表对于安全校园建设的意义
  7. python函数知识点总结_函数总结_python函数总结_高中函数知识点总结 - 云+社区 - 腾讯云...
  8. python重要知识点_35个高级Python知识点总结
  9. 【网络协议趣谈】CDN静态和动态数据缓存
  10. java反编译教程_Java反编译工具 - JD-GUI 下载地址及使用手册