1、确定分界点mid=l+r>>1

2、递归排序  开始归并

3、合二为一 (i=l,j=mid+1)

#include<iostream>
#include<stdio.h>
using namespace std;
const int N=1e5+10;
int q[N],tmp[N];
int n;
void merge_sort(int q[],int l,int r)
{if(l>=r) return;int mid=l+r>>1;int k=0;merge_sort(q,l,mid);merge_sort(q,mid+1,r);int i=l,j=mid+1;while(i<=mid&&j<=r){if(q[i]<q[j]) tmp[k++]=q[i++];else tmp[k++]=q[j++];}while(i<=mid) tmp[k++]=q[i++];while(j<=r) tmp[k++]=q[j++];for(i=l,j=0; i<=r; j++,i++) q[i]=tmp[j];
}
int main()
{scanf("%d",&n);for(int i=0; i<n; i++)scanf("%d",&q[i]);merge_sort(q,0,n-1);for(int i=0; i<n; i++) printf("%d ",q[i]);
}

注意事项:

while(i<=mid) tmp[k++]=q[i++];
        while(j<=r) tmp[k++]=q[j++];

在while循环外面

for(i=l,j=0; i<=r; j++,i++) q[i]=tmp[j];   将排好序的数组传回去q[]里面

排序——归并(合二为一)相关推荐

  1. 排序归并连接Merge Sort Join

    点击▲关注 "数据和云"   给公众号标星置顶 更多精彩 第一时间直达 1 实现算法 排序归并连接算法大致可以分为以下几步: (1)首先以目标SQL中指定的谓词条件(如果有的话)去 ...

  2. 外部排序--归并算法实现

    前提:在你看这篇文章之前假设你已经了解过外部排序的思想,所以在这里外部排序的基本原理就不加赘述了. 基本要点:外部排序顾名思义是对外部存储空间中数据的排序,那为什么不能像选择排序.插入排序.快速排序那 ...

  3. Java实现合并排序(归并)详细代码

    归并排序的思路 归并排序通过不断的将原数组进行拆分(通常拆分成左右两项),一直到剩下一项,然后分别将拆分的子数组进行合并,此时,两个子数组已经是排好序的,所以合并排序只需要进行一趟排序即可完成,所以此 ...

  4. 第一章 基础算法 【完结】

    已经全部熟练掌握,还得经常的复习 目录 排序 二分 高精度 前缀和 差分 位运算 双指针 离散化 区间合并 排序 模板题 AcWing 785. 快速排序 786. 第k个数 快速排序 快排的核心思想 ...

  5. AcWing算法题常用代码模板

    一.基础算法 1.常用代码模板 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 算法步骤: ​ ①确定分界点 ​ ②调整区间 ​ ③递归处理左右两段 Tips: ​ ①如果输入数据量 ...

  6. 【经典面试题】JS实现七种排序(冒泡、快排、归并、选择、插入、希尔、堆)

    目录 一.冒泡排序(稳定) 二.快速排序(不稳定) 三.归并排序(稳定) 四.插入排序(稳定 ) 五.希尔排序(不稳定) 六.直接选择排序(不稳定) 七.堆排序 (不稳定 ) 一.冒泡排序(稳定) 通 ...

  7. 排序 js版(冒泡、快排、归并、选择、插入、希尔、堆)

    冒泡排序(稳定 O(n^2)) 通过相邻元素之间的比较和交换,将排序码小的元素逐渐从底部移向顶部. // 冒泡,相邻元素之间比较function fn(arr){for(let i=0;i<ar ...

  8. 蓝桥杯AcWing学习笔记 4-3排序的学习(附相关蓝桥真题:小朋友排队)(Java)

    有参加蓝桥杯的同学可以给博主点个关注,博主也在准备蓝桥杯,可以跟着博主的博客一起刷题. 蓝桥杯 我的AcWing 题目及图片来自蓝桥杯C++ AB组辅导课 归并排序 归并排序--分治 ① 确定分界点: ...

  9. Algorithm——1.排序.md

    排序算法 交换类排序:冒泡排序.快速排序 选择类排序:简单选择排序.堆排序 插入类排序:直接插入排序.希尔排序 归并类排序:归并排序递归实现与非递归实现 交换类排序 交换类排序:冒泡排序.快速排序 冒 ...

  10. 数据结构-常用的排序算法

    总第123篇 好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈.等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲数据结构里面常用的几种排序 ...

最新文章

  1. OC 消息转发实现多继承
  2. Windows上安装HADOOP单机伪分布式集群
  3. hdu1.3.4 排序
  4. Android开源框架——网络解析GSON
  5. HTML中的meta(转载)
  6. Java Script基础(九) 下拉列表对象
  7. k8s 组件介绍-API Server
  8. java中_null和“”的区别详解
  9. 汇编中bss,data,text,rodata,heap,stack段的作用
  10. C++之操作符重载探究(四):下标运算符重载
  11. 实现Ajax异步的layui分页
  12. 使用Microsoft Office Visio 2007 绘图
  13. 任务栏可以点,电脑桌面却不显示内容的解决方法
  14. 【最新】Blender资产库纹理灯光 预设打光技巧
  15. html标签属性大全(囊括CSS、CSS3、H5、XML等)
  16. xcode联调设备出现“ ineligible Device”解决
  17. build.sh脚本
  18. 中国移动、天猫都在用的区块链抽奖,了解一下?
  19. 机器人动力学 拉格朗日乘子法求解动力学方程
  20. js特效之腾讯视频的图片轮播

热门文章

  1. angular ng-show中表达式的写法
  2. 【数据库】数据库安全性
  3. 程序员叫啥名字_网友:什么是好程序员?腾讯员工:首先起个“配”自己的网名!...
  4. 物理学四大神兽,除了“薛定谔的猫”, 你还知道哪几个?
  5. 20十年后的计算机作文600字,二十年后的我作文600字
  6. 教你如何设置电脑保护色来保护眼睛
  7. 第13节 IIS之WEB服务器—用于发布网站
  8. im开源java框架_开源的im即时通讯系统
  9. 针对P2P终结者4.0版本的研究
  10. 修改阿拉伯语等语言下的数字显示