归并排序
时间:2019-10-31
本文章向大家介绍归并排序,主要包括归并排序使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
排序思想:
1.确定分界点。mid=(l+r)/2
2.递归排序left right
3.归并---合二为一:(双指针),把较小的数添加到临时数组中
4.赋值临时数组中的有序元素到原来的数组。
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=100010; 4 int q[N],tmp[N]; 5 void merge_sort(int q[],int l,int r) 6 { 7 if(l>=r) return; //如果只有一个数,或没有数,返回 8 int mid=l+r>>1; 9 merge_sort(q,l,mid); 10 merge_sort(q,mid+1,r); 11 int k=0,i=l,j=mid+1; //采用双指针,一个指向左边,一个指向右边,不断把较小的数加入临时数组 12 while(i<=mid &&j<=r) 13 if(q[i]<=q[j]) 14 tmp[k++]=q[i++]; 15 else 16 tmp[k++]=q[j++]; 17 while(i<=mid) tmp[k++]=q[i++]; //将剩余的数一起添加到临时数组右侧 18 while(j<=r) tmp[k++]=q[j++]; 19 for(int i=l,j=0;i<=r;i++,j++) //将临时数组中的有序数复制到原来的q数组 20 q[i]=tmp[j]; 21 } 22 int main(){ 23 int n; 24 cin>>n; 25 for(int i=0;i<n;i++) 26 scanf("%d",&q[i]); 27 merge_sort(q,0,n-1); 28 for(int i=0;i<n;i++) 29 printf("%d ",q[i]); 30 return 0; 31 }
原文地址:https://www.cnblogs.com/pythen/p/11769490.html
- 利用向量积(叉积)计算三角形的面积和多边形的面积
- HDU 1556 Color the ball
- Hadoop数据分析平台实战——080HBase介绍和安装离线数据分析平台实战——080HBase介绍和安装
- Hadoop数据分析平台实战——130Hive Shell命令介绍 02(熟悉Hive略过)离线数据分析平台实战——130Hive Shell命令介绍 02(熟悉Hive略过)
- ECJTUACM16 Winter vacation training #4 题解&源码
- Hadoop数据分析平台实战——090HBase shell客户端和Java Api介绍离线数据分析平台实战——090HBase shell客户端和Java Api介绍
- Hadoop数据分析平台实战——140Hive函数以及自定义函数讲解离线数据分析平台实战——140Hive函数以及自定义函数讲解
- 深入理解树状数组
- Codeforces 712C Memory and De-Evolution
- Codeforces 712B Memory and Trident
- Hadoop数据分析平台实战——110Hive介绍和Hive环境搭建离线数据分析平台实战——110Hive介绍和Hive环境搭建
- 干货|普通反爬虫机制的应对策略
- python基础-字符串与编码
- Codeforces 708A Letters Cyclic Shift
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 搭建简易的物联网服务端和客户端-蓝牙控制(十六)
- java基础|CollectionUtils工具的基本使用
- LeetCode36|二叉树的右视图
- LeetCode35|完全二叉树的节点个数
- LeetCode34|数组中的第k个最大元素
- LeetCode33|寻找重复数
- LeetCode32|前k个高频元素
- LeetCode31|打印从1到最大的n位数
- LeetCode30|翻转单词顺序
- LeetCode28|最后一个单词的长度
- VS2015创建UWP报“vstemplate文件引用的向导类”错误
- 政采云趣味题
- LeetCode40|有序数组中的单一元素
- 搭建简易的物联网服务端和客户端-Cortana控制(十七)
- LeetCode39|找树左下角的值