本文已收录于专栏 ⭐️ 《算法通关笔记》⭐️

算法模版:归并排序

  • 前言
  • 基本概念
  • 算法思想
  • 常用模板
  • 完结散花
  • 参考文献

前言

唤我沈七就好。

往期专栏:
算法模板:快速排序

基本概念

归并排序是一种稳定的排序算法,即相同元素在排序后位置不会发生改变。
和快速排序相比,归并排序的时间复杂度妥妥的nlogn

算法思想

归并排序采用的同样是分治的思想,用递归的方式来处理子问题。
但与快速排序算法的执行顺序不同。
归并排序是先递归左右区间,直到分成每个区间左右只有一个元素的时候然后再借用答案数组进行合并,最后再将答案数组复制到原数组当中。
觉得比较抽象的话,可以看下图来帮助理解(图片来源:图解归并排序)

常用模板

伪代码模板

1.确定分界点中间值,将整个区间一分为二2.递归 两个子区间,直到每个子区间左右的仅有一个元素时开始合并因为后面在合并的过程中会将区间排序 所以每次递归之后返回的数组区间都是排序好的3.归并,将左右两个有序序列合并成一个有序序列合并方法:双指针先创建一个暂时存储答案的temp数组同时将放在左右两个区间的左端点的指针向右移动于此同时比较两指针各指向的元素将较小的元素放到tmep数组里然后较小的元素的指针继续向后移动一位继续与另一个指针指向的元素比较大小再将较小的元素放到tmep数组里反复重复这个过程直到某一个区间被全部遍历就可以直接将另一个区间的元素按顺序存入到temp数组里面了最后在将答案数组复制到原数组中

C++模板

#include<bits/stdc++.h>
using namespace std;
int a[10000];
void merge_sort(int a[],int l , int r)
{if(l>=r)return ;int temp[100];int mid=l+r>>1;int k=0,i=l,j=mid+1;merge_sort(a,l,mid);merge_sort(a,mid+1,r);while(i<=mid&&j<=r)if(a[i]<=a[j])temp[k++]=a[i++];elsetemp[k++]=a[j++];while(i<=mid)temp[k++]=a[i++];while(j<=r)temp[k++]=a[j++];for(int i = l,j = 0 ; i <= r ; i ++, j ++)a[i]=temp[j];
}
int main()
{int n;cin>>n;for(int i = 0 ; i < n ; i ++)cin>>a[i];merge_sort(a,0,n-1);for(int i = 0 ; i <  n ; i ++)cout<<a[i]<<" ";return 0;
}

完结散花

ok以上就是对 归并排序 的全部讲解啦,很感谢你能看到这儿。如果有遗漏、错误或者有更加通俗易懂的讲解,欢迎小伙伴私信我,我后期再补充完善。

参考文献

https://www.acwing.com/activity/content/19/

算法模板:归并排序【沈七】相关推荐

  1. 蓝桥杯万字攻略:算法模板大放送!-c++

    文章目录 前言 主要内容 由数据范围反推算法复杂度以及算法内容 基础算法 快速排序算法模板 归并排序算法模板 整数二分算法模板 浮点数二分算法模板 高精度加法 高精度减法 高精度乘低精度 高精度除以低 ...

  2. 算法模板:动态规划之线性DP【沈七】

    算法模板:动态规划之线性DP 前言 线性DP 数字三角形模型 摘花生 最小路径和 不同路径模型 不同路径(有障碍) 过河卒 (综合应用) 最长上升子序列模型 木棍加工 导弹拦截 完结散花 参考文献 前 ...

  3. 算法模板:动态规划之01背包【沈七】

    算法模板:动态规划之01背包 前言 动态规划 01背包 二维背包 一维优化 经典习题 小A点菜 5 倍经验日 买干草 完结散花 参考文献 前言 唤我沈七就好啦. 动态规划 核心作用:优化 当数据范围& ...

  4. 算法模版:模拟数据结构之绪论【沈七】

    算法模版:模拟数据结构之绪论 前言 什么是数据结构? 先看数据 再看结构 一些术语 逻辑结构 储存结构 完结散花 参考文献 前言 唤我沈七就好. 算下来应该是有两周没更新了. 是因为最近一直在研究数据 ...

  5. 算法模版:暴力搜索之DFS【沈七】

    本文已收录于专栏 ⭐️ <算法通关笔记>⭐️ 算法模版:暴力搜索之DFS 前言 基本概念 算法思想 常用模板 三种枚举方式 指数型枚举 排列型枚举 组合型枚举 完结散花 题目练习 参考文章 ...

  6. C/C++实现回文质数(超详解)【沈七】

    C/C++实现回文质数(超详解) 题目链接 题目描述 输入样例 **题解部分** **完整代码** **未完待续** 参考文章 唤我沈七就行嘿嘿. 大一软件工程在读. 菜鸡蒟蒻想在博客中记录一些算法学 ...

  7. 计算机考研数据结构算法模板

    计算机考研数据结构算法模板 前言 临近考研,想给考研党们分享一些比较通用的算法模板,让复习更高效一点.如果备考时间足够长,备考人应该有大量时间刷大量习题,会有自己总结的算法模板,笔者文章参考了王道考研 ...

  8. ACM算法模板总结(分类详细版)

    本文模均引用于y总的算法模板,网址:AcWing (转载请注明出处,本文属于持续更新ing.......biubiubiu......) 本人码风比起y总真的差远了,所以敲一遍后,还是想把y总的搬上来 ...

  9. C/C++实现蛇形矩阵(超详解)【沈七】

    C/C++实现蛇形矩阵(超详解) 题目链接 题目描述 输入样例 题解部分 完整代码 完结散花 悄悄告诉你: 参考文章 萌新报道! 唤我沈七就行嘿嘿. 大一软件工程在读. 菜鸡蒟蒻想在博客中记录一些算法 ...

最新文章

  1. Docker 1.7.0 深度解析
  2. RunTime运行时在iOS中的应用之UITextField占位符placeholder
  3. 如何学习HTML语言
  4. 2020即将过去,数据库最好的时代已经到来!
  5. sql注入利用_SQL注入:这是什么? 原因和利用
  6. WorkSbell第10周2017
  7. 谷歌插件 axure +去广告插件
  8. matlab风应力工具包,MSATSI:结合可靠经典方法的新简化用户处理及可视化工具的应力反演MATLAB软件包.pdf...
  9. html怎么画一个正方形,css3画一个正方体
  10. 注册apple id方法
  11. 外酥里嫩的锅包肉做法
  12. 1.7.1 计算机网络体系结构的形成
  13. html5文本溢出应该怎么处理?
  14. 服务监控--zabbix
  15. dpo指标详解买入绝技_极少人知道“DPO”指标,但实战性很强
  16. 浅谈晏殊几何学知识图谱技术
  17. Android高版本使用DocumentFile读写外置存储的问题
  18. Docker镜像的优化
  19. 微信小程序 php配置,微信小程序 教程之小程序配置
  20. 中国PaaS市场群雄逐鹿,究竟谁能笑傲江湖?

热门文章

  1. 【网络文摘】一位36岁程序员的困惑
  2. 深入理解美团 Leaf 发号器开源方案
  3. 自媒体推广应该怎么入手,如何去做
  4. 详细描述NAND FLASH FTL 层算法
  5. 细数饿了么开源的前端项目及实践
  6. arxiv数据_使用neo4j第1部分分析arxiv数据
  7. 如何实现在Linux上一键安装虚拟机(从入门到脚本自动化安装)
  8. 在手机触摸屏领域应用的触摸芯片
  9. 视频编码:H.264编码
  10. Unity程序框架总结归置系列(5)——场景切换模块