mergeSort 归并排序

1. 基本描述

​ 将两个 有序 的数列 合并成一个有序数列。归并排序的核心就是这么一句话。

​ 这里有两个重点

  1. 前提 有序数列
  2. 合并

​ 问题就在这里,一个无序的数组怎么前提是有序。

​ 一个数的数列就是有序。

这就涉及到归并排序算法细节了。

时间复杂度
$$
O(nlog_2n)
$$
​ 空间复杂度
$$
T(n)
$$

2.算法流程

  1. 从上往下分解

  2. 从下往上归并

    所以归并排序,在其名字中其实忽略了分解。那么同样采用递归实现。

3. 算法实现

从上往下分解

   private static void merge(int[] array, int l, int r){if(l==r) {return ;}int mid=(l+r)/2;merge(array,l,mid);merge(array,mid+1,r);mergeSort(array,l,mid+1,r);}

​ 归并算法

  1. 扩充
  2. 拷贝
  3. 归并
  4. 处理尾部
    private static void mergeSort(int[] array, int l, int mid, int r) {int  [] left=new int [mid-l];int []right=new int [r-mid+1];System.arraycopy(array,l,left,0,left.length);System.arraycopy(array,mid,right,0,right.length);int i=0,j=0;int post=l;while(i<left.length&&j<right.length){if(left[i]<right[j])array[post]=left[i++];elsearray[post]=right[j++];post++;}for (;i<left.length;i++)array[post++]=left[i];for (;j<right.length;j++)array[post++]=right[j];}

转载于:https://www.cnblogs.com/EsMussSeinHui/p/11303966.html

# mergeSort 归并排序相关推荐

  1. JavaScript实现MergeSort归并排序算法(附完整源码)

    JavaScript实现MergeSort归并排序算法(附完整源码) Comparator.js完整源代码 Sort.js完整源代码 MergeSort.js完整源代码 Comparator.js完整 ...

  2. CC00050.hadoop——|HadoopMapReduce.V23|——|Hadoop.v23|MR算法扩展|MergeSort归并排序|

    一.[MR算法扩展之MergeSort归并排序][MR算法扩展之QuickSort快速排序]:Mergesort归并排序 二.合并 三.合并细节 ### --- 不断地将当前序列平均分割成 2个子序列 ...

  3. MergeSort 归并排序

    归并排序算法: 思路,设置left,mid,right三个参数,对mid的左和右分别再进行递归调用归并排序算法,直到每个数组中只有1时返回,最终完成归并排序,具体思路见程序 注:归并排序的时间复杂度为 ...

  4. java的mergesort函数_归并排序 - Algorithms, Part I, week 3 MERGESORTS

    前言 本周讲解两个50多年前发明,但今天仍然很重要的经典算法 (归并排序和快速排序) 之一 -- 归并排序,几乎每个软件系统中都可以找到其中一个或两个的实现,并研究这些经典方法的新变革.我们的涉及范围 ...

  5. php 归并排序,详解PHP归并排序的实现

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表.归并排序的一个缺点是它需要存储器有另一个大小等于数据项数目的数组.如果初始数组几乎占满整个存储器,那么归并排序将不能工作,但是 ...

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

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

  7. 举例详解PHP归并排序的实现

    来源:https://blog.phpha.com/backup/archives/1683.html 归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干 ...

  8. java的归并排序算法_归并排序算法Java实现

    一. 算法描述 归并排序采用了分治策略(divide-and-conquer),就是将原问题分解为一些规模较小的相似子问题,然后递归解决这些子问题,最后合并其结果作为原问题的解. 归并排序将待排序数组 ...

  9. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)...

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

最新文章

  1. 用Python解“求特殊方程得正整数解”题
  2. 【贪心】【P5078】Tweetuzki 爱军训
  3. linux常用命令以及相关说明
  4. c# 获取html中指定标签信息,c# – 如何解析图像标签的HTML字符串以获取SRC信息?...
  5. python rpc webservice_关于RPC、HTTP、WebService的区别
  6. leetcode - 121.买卖股票的最佳时机
  7. Qlik 助力安井食品实现企业智能决策、高效运营
  8. Spring Cloud之Zuul网关集群
  9. 总结全网最全的数据学习平台
  10. 大数据资源共享网盘下载
  11. PCI Express 2D 多媒体显卡_IOEHM-GC_V1.0 Mini-PCIe 显卡_嵌入式行业图像显示_视频加速和2D加速功能
  12. 嵌入式和java工资对比_嵌入式和java哪个前景好
  13. realme有升级到android10的,RealmeX/Q将升级安卓10底层刷机包
  14. 蓝牙BQB 认证流程
  15. tikz 折线 箭头_TIKZ——LaTeX基本绘图
  16. pandas去除两列中同一行有相同元素的数据——数据分析必备技能(5)
  17. ICMP报文格式解析
  18. html播放器投屏,爱奇艺万能播放器投屏播放的具体方法介绍
  19. Minor GC、Major GC和Full GC之间的区别
  20. 我也不知道问题出在哪

热门文章

  1. 随机生成一个质数的python代码_使用质数生成随机密码
  2. Linux命令(1)—— ls、pwd、tree、clear、文件相关操作
  3. Understanding Quaternions 中文翻译《理解四元数》
  4. 机器学习入门:机器学习概论
  5. 牛客-139 I. Substring(后缀数组 or 后缀自动机)
  6. vector的基本操作
  7. TCP滑动窗口和拥塞控制机制
  8. 简单易懂的 pwnable.kr 第六题[random]Writeupt
  9. java技术自我_2020年Java程序员如何进行自我提升?
  10. 同一Word文档不同尺寸(纸张)页面的混排方法