Java排序算法之归并排序
基本思想:
归并排序利用分治法,先将一个序列分成一个个子序列,然后对子序列进行排序,再把有序子序列合并为整体有序序列。
图片来自于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排序算法之归并排序相关推荐
- java 排序算法总结,Java排序算法总结之归并排序
本文实例讲述了Java排序算法总结之归并排序.分享给大家供大家参考.具体分析如下: 归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作.和快速排序类似,让我们一起来看 ...
- 排序算法:归并排序、快速排序
相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.归并排序: 1.工作原理: 归 ...
- Java十大排序算法总结,Java排序算法总结之冒泡排序
本文实例讲述了Java排序算法总结之冒泡排序.分享给大家供大家参考.具体分析如下: 前言:冒泡排序(BubbleSort)就是依次比较相邻的两个数,将小数放在前面,大数放在后面. 下面让我们一起 ...
- 数据结构与算法:十大排序算法之归并排序
数据结构与算法:十大排序算法之归并排序 package TopTenSortingAlgorithms;/*** 归并排序:Java** @author skywang* @date 2014/03/ ...
- Java排序算法:冒泡排序
Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...
- 排序算法之--归并排序(好玩的一个算法o。o)快速入门
排序算法之--归并排序(好玩的一个算法o.o) 下面是归并操作的基本思路(注意:是归并操作哦,不是归并排序哦) 归并操作的工作原理如下: 第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存 ...
- NOI提高级:排序算法之归并排序、快速排序
图解排序算法(四)之归并排序 图解排序算法(四)之归并排序 - dreamcatcher-cx - 博客园 小学生图解排序算法:⑥归并排序 小学生图解排序算法:⑥归并排序_纯文笔记-CSDN博客_图解 ...
- Java排序算法之直接选择排序
Java排序算法之直接选择排序 基本过程:假设一序列为R[0]~R[n-1],第一次用R[0]和R[1]~R[n-1]相比较,若小于R[0],则交换至R[0]位置上.第二次从R[1]~R[n-1]中选 ...
- java排序算法 sort_Java排序算法之SleepSort排序示例
本文实例讲述了Java排序算法之SleepSort排序.分享给大家供大家参考,具体如下: 分享一个很有创意的排序算法:sleepSort .巧妙利用了线程的sleep(),代码如下: public c ...
最新文章
- IT建设的4化(转载)
- 打开Eclipse时出现Failed to create the Java Virtual Machine
- vbsedit无法创建空文档_如何用Python快速优雅的批量修改Word文档样式?
- eclipse创建Maven的动态web工程
- @requestparam map 接收前端的值_前端面试总结篇(初级)
- 爬虫 页面元素变化_爬虫 基本知识 萌新
- 作者:单志广(1974-),男,博士,国家信息中心信息化研究部副主任、研究员、博士生导师。...
- 图像处理中的卷积与模板
- (77)FPGA时序违例及解决办法-面试必问(一)(第16天)
- 百度CTO王海峰:百度翻译每日翻译量已达到千亿字符
- 下个乳业蓝海风口 竟很可能是低温鲜奶?
- python 声明不赋值_为什么Python赋值不返回值?
- 2018青岛ICPC ZOJ 4062: Plants vs. Zombies(二分)
- Kubernetes 之 MySQL 持久存储和故障转移(十一)
- getbook netty实战_Netty 实战(精髓)简介(Netty in Action)
- 计算机 绘图 教案,工程制图基础
- 大数据平台架构有哪些
- 高校学生档案管理系统(Angularjs+HTML+CSS+bootstrap)
- python中的complex()函数
- 计算机大赛获奖作品动画,全国xx杯说课大赛计算机类一等奖作品:《遮罩动画》说课课件...
热门文章
- 19.Oracle10g服务器管理恢复--RMAN表空间恢复(练习33)
- VS2017 ASP.NET MVC 5.0 开部署问题汇总
- 软工作业3:词频统计
- shell+vim——05
- mysql设计规范和原则
- parents()和parent()
- 洛谷P2896 [USACO08FEB]一起吃饭Eating Together
- Ajax、Comet与Websocket
- Examples_06_02(android)DDMS的data文件中没有显示文件。
- jQuery Mobile和PhoneGap混合开发