基本思想:

归并排序利用分治法,先将一个序列分成一个个子序列,然后对子序列进行排序,再把有序子序列合并为整体有序序列。

图片来自于http://www.cnblogs.com/shudonghe/p/3302888.html

Java代码实现:

public class GuiBing {public static void main(String[] args) {int[] a = { 14, 12, 15, 13, 11, 16 };sort(a, 0, a.length-1);}//使用递归算法public static void sort(int[] a, int left, int right) {if (left >= right)return;int center = (left + right) >> 1;sort(a, left, center);sort(a, center + 1, right);merge(a, left, center, right);}public static void merge(int[] data, int left, int center, int right) {int[] tmpArr = new int[right+1];int mid = center + 1;int index = left; // index记录临时数组的索引int tmp = left;// 从两个数组中取出最小的放入中临时数组while (left <= center && mid <= right) {tmpArr[index++] = (data[left] <= data[mid]) ? data[left++]: data[mid++];}// 剩余部分依次放入临时数组while (mid <= right) {tmpArr[index++] = data[mid++];}while (left <= center) {tmpArr[index++] = data[left++];}// 将临时数组中的内容复制回原数组for (int i = tmp; i <= right; i++) {data[i] = tmpArr[i];}System.out.println(Arrays.toString(data));}}

算法性能分析:

时间复杂度:最坏最好和平均时间复杂度均为O(nlogn)

空间复杂度:归并排序需要一个大小为n的临时存储空间用以保存合并序列,所以空间复杂度为O(n)

算法稳定性:在归并排序中,相等的元素的顺序不会改变,所以它是稳定的算法。

转载于:https://www.cnblogs.com/love-Stefanie/p/6743413.html

Java排序算法之归并排序相关推荐

  1. java 排序算法总结,Java排序算法总结之归并排序

    本文实例讲述了Java排序算法总结之归并排序.分享给大家供大家参考.具体分析如下: 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.和快速排序类似,让我们一起来看 ...

  2. 排序算法:归并排序、快速排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.归并排序: 1.工作原理: 归 ...

  3. Java十大排序算法总结,Java排序算法总结之冒泡排序

    本文实例讲述了Java排序算法总结之冒泡排序.分享给大家供大家参考.具体分析如下: 前言:冒泡排序(BubbleSort)就是依次比较相邻的两个数,将小数放在前面,大数放在后面. 下面让我们一起    ...

  4. 数据结构与算法:十大排序算法之归并排序

    数据结构与算法:十大排序算法之归并排序 package TopTenSortingAlgorithms;/*** 归并排序:Java** @author skywang* @date 2014/03/ ...

  5. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  6. 排序算法之--归并排序(好玩的一个算法o。o)快速入门

    排序算法之--归并排序(好玩的一个算法o.o) 下面是归并操作的基本思路(注意:是归并操作哦,不是归并排序哦) 归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存 ...

  7. NOI提高级:排序算法之归并排序、快速排序

    图解排序算法(四)之归并排序 图解排序算法(四)之归并排序 - dreamcatcher-cx - 博客园 小学生图解排序算法:⑥归并排序 小学生图解排序算法:⑥归并排序_纯文笔记-CSDN博客_图解 ...

  8. Java排序算法之直接选择排序

    Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...

  9. java排序算法 sort_Java排序算法之SleepSort排序示例

    本文实例讲述了Java排序算法之SleepSort排序.分享给大家供大家参考,具体如下: 分享一个很有创意的排序算法:sleepSort .巧妙利用了线程的sleep(),代码如下: public c ...

最新文章

  1. IT建设的4化(转载)
  2. 打开Eclipse时出现Failed to create the Java Virtual Machine
  3. vbsedit无法创建空文档_如何用Python快速优雅的批量修改Word文档样式?
  4. eclipse创建Maven的动态web工程
  5. @requestparam map 接收前端的值_前端面试总结篇(初级)
  6. 爬虫 页面元素变化_爬虫 基本知识 萌新
  7. 作者:单志广(1974-),男,博士,国家信息中心信息化研究部副主任、研究员、博士生导师。...
  8. 图像处理中的卷积与模板
  9. (77)FPGA时序违例及解决办法-面试必问(一)(第16天)
  10. 百度CTO王海峰:百度翻译每日翻译量已达到千亿字符
  11. 下个乳业蓝海风口 竟很可能是低温鲜奶?
  12. python 声明不赋值_为什么Python赋值不返回值?
  13. 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
  14. Kubernetes 之 MySQL 持久存储和故障转移(十一)
  15. getbook netty实战_Netty 实战(精髓)简介(Netty in Action)
  16. 计算机 绘图 教案,工程制图基础
  17. 大数据平台架构有哪些
  18. 高校学生档案管理系统(Angularjs+HTML+CSS+bootstrap)
  19. python中的complex()函数
  20. 计算机大赛获奖作品动画,全国xx杯说课大赛计算机类一等奖作品:《遮罩动画》说课课件...

热门文章

  1. 19.Oracle10g服务器管理恢复--RMAN表空间恢复(练习33)
  2. VS2017 ASP.NET MVC 5.0 开部署问题汇总
  3. 软工作业3:词频统计
  4. shell+vim——05
  5. mysql设计规范和原则
  6. parents()和parent()
  7. 洛谷P2896 [USACO08FEB]一起吃饭Eating Together
  8. Ajax、Comet与Websocket
  9. Examples_06_02(android)DDMS的data文件中没有显示文件。
  10. jQuery Mobile和PhoneGap混合开发