排序——归并(合二为一)
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[]里面
排序——归并(合二为一)相关推荐
- 排序归并连接Merge Sort Join
点击▲关注 "数据和云" 给公众号标星置顶 更多精彩 第一时间直达 1 实现算法 排序归并连接算法大致可以分为以下几步: (1)首先以目标SQL中指定的谓词条件(如果有的话)去 ...
- 外部排序--归并算法实现
前提:在你看这篇文章之前假设你已经了解过外部排序的思想,所以在这里外部排序的基本原理就不加赘述了. 基本要点:外部排序顾名思义是对外部存储空间中数据的排序,那为什么不能像选择排序.插入排序.快速排序那 ...
- Java实现合并排序(归并)详细代码
归并排序的思路 归并排序通过不断的将原数组进行拆分(通常拆分成左右两项),一直到剩下一项,然后分别将拆分的子数组进行合并,此时,两个子数组已经是排好序的,所以合并排序只需要进行一趟排序即可完成,所以此 ...
- 第一章 基础算法 【完结】
已经全部熟练掌握,还得经常的复习 目录 排序 二分 高精度 前缀和 差分 位运算 双指针 离散化 区间合并 排序 模板题 AcWing 785. 快速排序 786. 第k个数 快速排序 快排的核心思想 ...
- AcWing算法题常用代码模板
一.基础算法 1.常用代码模板 快速排序算法模板 -- 模板题 AcWing 785. 快速排序 算法步骤: ①确定分界点 ②调整区间 ③递归处理左右两段 Tips: ①如果输入数据量 ...
- 【经典面试题】JS实现七种排序(冒泡、快排、归并、选择、插入、希尔、堆)
目录 一.冒泡排序(稳定) 二.快速排序(不稳定) 三.归并排序(稳定) 四.插入排序(稳定 ) 五.希尔排序(不稳定) 六.直接选择排序(不稳定) 七.堆排序 (不稳定 ) 一.冒泡排序(稳定) 通 ...
- 排序 js版(冒泡、快排、归并、选择、插入、希尔、堆)
冒泡排序(稳定 O(n^2)) 通过相邻元素之间的比较和交换,将排序码小的元素逐渐从底部移向顶部. // 冒泡,相邻元素之间比较function fn(arr){for(let i=0;i<ar ...
- 蓝桥杯AcWing学习笔记 4-3排序的学习(附相关蓝桥真题:小朋友排队)(Java)
有参加蓝桥杯的同学可以给博主点个关注,博主也在准备蓝桥杯,可以跟着博主的博客一起刷题. 蓝桥杯 我的AcWing 题目及图片来自蓝桥杯C++ AB组辅导课 归并排序 归并排序--分治 ① 确定分界点: ...
- Algorithm——1.排序.md
排序算法 交换类排序:冒泡排序.快速排序 选择类排序:简单选择排序.堆排序 插入类排序:直接插入排序.希尔排序 归并类排序:归并排序递归实现与非递归实现 交换类排序 交换类排序:冒泡排序.快速排序 冒 ...
- 数据结构-常用的排序算法
总第123篇 好久不见哈,我终于又更新了,惊不惊喜,意不意外,哈哈哈哈.等之后会专门写一篇文章给大家汇报汇报我最近在忙什么呢,今天这篇还是接着之前的数据结构系列继续,主要讲讲数据结构里面常用的几种排序 ...
最新文章
- OC 消息转发实现多继承
- Windows上安装HADOOP单机伪分布式集群
- hdu1.3.4 排序
- Android开源框架——网络解析GSON
- HTML中的meta(转载)
- Java Script基础(九) 下拉列表对象
- k8s 组件介绍-API Server
- java中_null和“”的区别详解
- 汇编中bss,data,text,rodata,heap,stack段的作用
- C++之操作符重载探究(四):下标运算符重载
- 实现Ajax异步的layui分页
- 使用Microsoft Office Visio 2007 绘图
- 任务栏可以点,电脑桌面却不显示内容的解决方法
- 【最新】Blender资产库纹理灯光 预设打光技巧
- html标签属性大全(囊括CSS、CSS3、H5、XML等)
- xcode联调设备出现“ ineligible Device”解决
- build.sh脚本
- 中国移动、天猫都在用的区块链抽奖,了解一下?
- 机器人动力学 拉格朗日乘子法求解动力学方程
- js特效之腾讯视频的图片轮播
热门文章
- angular ng-show中表达式的写法
- 【数据库】数据库安全性
- 程序员叫啥名字_网友:什么是好程序员?腾讯员工:首先起个“配”自己的网名!...
- 物理学四大神兽,除了“薛定谔的猫”, 你还知道哪几个?
- 20十年后的计算机作文600字,二十年后的我作文600字
- 教你如何设置电脑保护色来保护眼睛
- 第13节 IIS之WEB服务器—用于发布网站
- im开源java框架_开源的im即时通讯系统
- 针对P2P终结者4.0版本的研究
- 修改阿拉伯语等语言下的数字显示